Skip to content

Commit

Permalink
refactored configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
Peo committed Feb 4, 2013
1 parent ab3d7bf commit fe799b6
Show file tree
Hide file tree
Showing 19 changed files with 46 additions and 153 deletions.
6 changes: 1 addition & 5 deletions BusDemo/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,13 @@
using Microsoft.ServiceBus.Messaging;
using Simple.ServiceBus;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Simple.ServiceBus.Autofac;

namespace BusDemo
{
class Program
{
static void Main(string[] args)
static void Main()
{
var container = new ContainerBuilder()
.RegisterServiceBus()
Expand Down
6 changes: 1 addition & 5 deletions Simple.ServiceBus.Autofac/Extensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,6 @@ public static ISimpleBusConfigurator RegisterHandlers(this BuilderInitialized bu

public static ISimpleBusConfigurator RegisterConfiguration(this ISimpleBusConfigurator builder, Assembly assembly)
{
builder.Builder.RegisterAssemblyTypes(assembly)
.Where(x => x.GetInterfaces().Contains(typeof(ISubscriptionConfiguration<>)))
.AsImplementedInterfaces();

return new SimpleBusConfigurator(builder.Builder);
}

Expand All @@ -57,7 +53,7 @@ public BuilderInitialized(ContainerBuilder builder)

public interface ISubscriptionConfigurator<T> : IBuilderAccessor
{
ISimpleBusConfigurator Configure(Action<ISubscriptionConfiguration<T>> action);
ISimpleBusConfigurator Configure(Action<SubscriptionConfiguration> action);
ISimpleBusConfigurator WithContainerConfig();

}
Expand Down
8 changes: 1 addition & 7 deletions Simple.ServiceBus.Autofac/ServiceBusModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ public class ServiceBusModule : Module
protected override void Load(ContainerBuilder builder)
{
builder.RegisterAssemblyTypes(System.Reflection.Assembly.GetAssembly(typeof (IServiceBus)))
.Except<Subscription.SubscriptionConfigurationRepository>()
.AsImplementedInterfaces()
.SingleInstance();

Expand All @@ -25,12 +24,7 @@ protected override void Load(ContainerBuilder builder)
builder.Register(x => MessagingFactory.Create())
.AsSelf()
.SingleInstance();

builder.RegisterType<SubscriptionConfigurationRepository>()
.AsImplementedInterfaces()
.SingleInstance();



}
}
}
1 change: 0 additions & 1 deletion Simple.ServiceBus.Autofac/Simple.ServiceBus.Autofac.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,6 @@
<Compile Include="ServiceBusModule.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SimpleBusConfigurator.cs" />
<Compile Include="SubscriptionConfigurationRepository.cs" />
<Compile Include="SubscriptionConfigurator.cs" />
</ItemGroup>
<ItemGroup>
Expand Down
4 changes: 2 additions & 2 deletions Simple.ServiceBus.Autofac/SubScriptionConfigurator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ public SubscriptionConfigurator(ISimpleBusConfigurator configurator)
_configurator = configurator;
}

public ISimpleBusConfigurator Configure(Action<ISubscriptionConfiguration<T>> action)
public ISimpleBusConfigurator Configure(Action<SubscriptionConfiguration> action)
{
var config = new SubscriptionConfiguration<T>();
var config = new SubscriptionConfiguration();
action(config);
Builder.RegisterInstance(config)
.AsImplementedInterfaces()
Expand Down
28 changes: 0 additions & 28 deletions Simple.ServiceBus.Autofac/SubscriptionConfigurationRepository.cs

This file was deleted.

10 changes: 2 additions & 8 deletions Simple.ServiceBus/ServiceBusFactory.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
using Microsoft.ServiceBus;
using Microsoft.ServiceBus.Messaging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Simple.ServiceBus.Infrastructure;
using Simple.ServiceBus.Publishing;
using Simple.ServiceBus.Subscription;
using MessageReceiver = Simple.ServiceBus.Subscription.MessageReceiver;
Expand All @@ -17,11 +12,10 @@ public class ServiceBusFactory
private static readonly MessagingFactory MessagingFactory = MessagingFactory.Create();
private static readonly NamespaceManager NamespaceManager = NamespaceManager.Create();
private static readonly TopicRepository TopicRepository = new TopicRepository(NamespaceManager);
private static readonly SubscriptionConfigurationRepository SubscriptionConfigurationRepository = new SubscriptionConfigurationRepository();


internal static readonly ObservableSubscriptionManagerFactory ObservableSubscriptionManagerFactory = new ObservableSubscriptionManagerFactory(
new MessageReceiver(new SubscriptionClientFactory(MessagingFactory, new SubscriptionRepository(NamespaceManager, TopicRepository)), SubscriptionConfigurationRepository),
new SubscriptionConfigurationRepository()
new MessageReceiver(new SubscriptionClientFactory(MessagingFactory, new SubscriptionRepository(NamespaceManager, TopicRepository)))
);

private static readonly IServiceBus ServiceBus = new ServiceBus(
Expand Down
3 changes: 1 addition & 2 deletions Simple.ServiceBus/Simple.ServiceBus.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -60,18 +60,17 @@
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ServiceBusFactory.cs" />
<Compile Include="Subscription\DisposableAction.cs" />
<Compile Include="Subscription\IConfigurated.cs" />
<Compile Include="Subscription\IMessageReceiver.cs" />
<Compile Include="Subscription\IObservableSubscriptionManagerFactory.cs" />
<Compile Include="Subscription\ISubscriptionClientFactory.cs" />
<Compile Include="Subscription\ISubscriptionConfigurationRepository.cs" />
<Compile Include="Subscription\ISubscriptionManager.cs" />
<Compile Include="Subscription\ISubscriptionRepository.cs" />
<Compile Include="Subscription\MessageReceiver.cs" />
<Compile Include="Subscription\ObservableSubscriptionManagerFactory.cs" />
<Compile Include="Subscription\ObservaleSubscriptionManager.cs" />
<Compile Include="Subscription\SubscriptionClientFactory.cs" />
<Compile Include="Subscription\SubscriptionConfiguration.cs" />
<Compile Include="Subscription\SubscriptionConfigurationRepository.cs" />
<Compile Include="Subscription\SubscriptionManager.cs" />
<Compile Include="Subscription\SubscriptionRepository.cs" />
</ItemGroup>
Expand Down
4 changes: 2 additions & 2 deletions Simple.ServiceBus/Subscription/DisposableAction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace Simple.ServiceBus.Subscription
{
internal class DisposableAction : IDisposable
internal class DisposableAction : IConfigurated
{
private readonly Action _action;

Expand All @@ -16,6 +16,6 @@ public void Dispose()
_action();
}

public string Id { get; set; }
public SubscriptionConfiguration Config { get; set; }
}
}
9 changes: 9 additions & 0 deletions Simple.ServiceBus/Subscription/IConfigurated.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
using System;

namespace Simple.ServiceBus.Subscription
{
public interface IConfigurated:IDisposable
{
SubscriptionConfiguration Config { get; set; }
}
}
2 changes: 1 addition & 1 deletion Simple.ServiceBus/Subscription/IMessageReceiver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ namespace Simple.ServiceBus.Subscription
{
public interface IMessageReceiver
{
IDisposable Receive<T>(ISubscriptionConfiguration<T> config, IObserver<T> observer);
IDisposable Receive<T>(SubscriptionConfiguration config, IObserver<T> observer);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ namespace Simple.ServiceBus.Subscription
{
public interface ISubscriptionClientFactory
{
SubscriptionClient CreateFor<T>(ISubscriptionConfiguration<T> config);
SubscriptionClient CreateFor<T>(SubscriptionConfiguration config);
}
}

This file was deleted.

9 changes: 4 additions & 5 deletions Simple.ServiceBus/Subscription/MessageReceiver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,17 @@ namespace Simple.ServiceBus.Subscription
public class MessageReceiver : IMessageReceiver
{
private readonly ISubscriptionClientFactory _subscriptionClientFactory;
private readonly ISubscriptionConfigurationRepository _configurationRepository;


public MessageReceiver(ISubscriptionClientFactory subscriptionClientFactory, ISubscriptionConfigurationRepository configurationRepository)
public MessageReceiver(ISubscriptionClientFactory subscriptionClientFactory)
{
_subscriptionClientFactory = subscriptionClientFactory;
_configurationRepository = configurationRepository;
}

public IDisposable Receive<T>(ISubscriptionConfiguration<T> config, IObserver<T> observer)
public IDisposable Receive<T>(SubscriptionConfiguration config, IObserver<T> observer)
{
//NOTE config is not used yet
var client = _subscriptionClientFactory.CreateFor(_configurationRepository.Get<T>());
var client = _subscriptionClientFactory.CreateFor<T>(config);
Receive<T>(client, observer.OnNext, observer.OnError);

return new DisposableAction(() => Stop<T>(client));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,17 @@ namespace Simple.ServiceBus.Subscription
public class ObservableSubscriptionManagerFactory : IObservableSubscriptionManagerFactory
{
private readonly IMessageReceiver _messageReceiver;
private readonly ISubscriptionConfigurationRepository _configurationRepository;


public ObservableSubscriptionManagerFactory(
IMessageReceiver messageReceiver,
ISubscriptionConfigurationRepository configurationRepository
)
public ObservableSubscriptionManagerFactory(IMessageReceiver messageReceiver)
{
_messageReceiver = messageReceiver;
_configurationRepository = configurationRepository;

}

public INamedObservable<T> Create<T>()
{
return new ObservaleSubscriptionManager<T>(_messageReceiver, _configurationRepository);
}
{
return new ObservaleSubscriptionManager<T>(_messageReceiver);
}
}
}
30 changes: 13 additions & 17 deletions Simple.ServiceBus/Subscription/ObservaleSubscriptionManager.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;

Expand All @@ -10,34 +11,29 @@ public class ObservaleSubscriptionManager<T> : INamedObservable<T>
{
private readonly IMessageReceiver _messageReceiver;
private readonly IDictionary<string, IObserver<T>> _observers;
private readonly ISubscriptionConfiguration<T> _config;


public ObservaleSubscriptionManager(
IMessageReceiver messageReceiver,
ISubscriptionConfigurationRepository subscriptionConfigurationRepository)
IMessageReceiver messageReceiver)
{
_messageReceiver = messageReceiver;
_observers = new ConcurrentDictionary<string, IObserver<T>>();
_config = subscriptionConfigurationRepository.Get<T>();
}

public IDisposable Subscribe(IObserver<T> observer)
{
return Subscribe(observer, Guid.NewGuid().ToString());
return Subscribe(observer, new SubscriptionConfiguration { SubscriptionName = Guid.NewGuid().ToString() });
}
public IDisposable Subscribe(IObserver<T> observer, string subscriptionKey)

public IConfigurated Subscribe(IObserver<T> observer, SubscriptionConfiguration config)
{
//TODO: needs to be unique for multiple application use
if (_observers.ContainsKey(subscriptionKey))
throw new DuplicateNameException(subscriptionKey);

_observers[subscriptionKey] = observer;
_config.SubscriptionName = subscriptionKey;

var stop = _messageReceiver.Receive(_config, observer);

if (_observers.ContainsKey(config.SubscriptionName))
throw new DuplicateNameException(config.SubscriptionName);
_observers[config.SubscriptionName] = observer;

var stop = _messageReceiver.Receive(config, observer);

return new DisposableAction(() => Unhsubscribe(subscriptionKey, stop)) { Id = subscriptionKey };
return new DisposableAction(() => Unhsubscribe(config.SubscriptionName, stop)) { Config=config };
}

private void Unhsubscribe(string subscriptionKey, IDisposable stoppable)
Expand All @@ -54,6 +50,6 @@ private void Unhsubscribe(string subscriptionKey, IDisposable stoppable)

public interface INamedObservable<out T> : IObservable<T>
{
IDisposable Subscribe(IObserver<T> observer, string name);
IConfigurated Subscribe(IObserver<T> observer, SubscriptionConfiguration config);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public SubscriptionClientFactory(MessagingFactory messagingFactory,
_subscriptionRepository = subscriptionRepository;
}

public SubscriptionClient CreateFor<T>(ISubscriptionConfiguration<T> config)
public SubscriptionClient CreateFor<T>(SubscriptionConfiguration config)
{
var subscription = _subscriptionRepository.Get<T>(config.SubscriptionName);
var topicPath = subscription.TopicPath;
Expand Down
13 changes: 1 addition & 12 deletions Simple.ServiceBus/Subscription/SubscriptionConfiguration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,7 @@

namespace Simple.ServiceBus.Subscription
{
public interface ISubscriptionConfiguration<T> : ISubscriptionReceiveConfiguration<T>
{
string SubscriptionName { get; set; }
}

public interface ISubscriptionReceiveConfiguration<T>
{
TimeSpan TimeSpan { get; set; }
ReceiveMode ReceiveMode { get; set; }
}

public class SubscriptionConfiguration<T> : ISubscriptionConfiguration<T>
public class SubscriptionConfiguration
{
public ReceiveMode ReceiveMode { get; set; }

Expand Down

This file was deleted.

0 comments on commit fe799b6

Please sign in to comment.