public void CanSubscribe() { var sut = new Bus(); ISubscriptionTag tag = sut.Subscribe <DoSomethingCommand>(message => { }); sut.IsSubscribed(tag).Should().BeTrue(because: "the bus creates the subscription"); }
public void CanUnsubscribe() { var sut = new Bus(); ISubscriptionTag tag = sut.Subscribe <DoSomethingCommand>(message => { }); sut.Unsubscribe(tag); sut.IsSubscribed(tag).Should().BeFalse(because: "the bus unsubscribe it"); }
public void CanSubscribeSubscriber() { ISubscriber subscriber = A.Fake <ISubscriber>(); var sut = new Bus(); ISubscriptionTag tag = sut.Subscribe <string>(subscriber); tag.Should().NotBeNull(); A.CallTo(() => subscriber.SubscribeTo(A <ISourceBlock <IMessage> > .Ignored)).MustHaveHappenedOnceExactly(); }
public void BuildWithoutSubscribers() { var registry = A.Fake <ISubscriptionRegistry>(); var sut = new AmqpSubscriptionBuilder(); ISubscriptionTag publishingTag = sut.Build(registry); A.CallTo(registry) .Where(call => call.Method.Name == "Subscribe") .MustNotHaveHappened(); }
public void BuildWithSubscribers() { var registry = A.Fake <ISubscriptionRegistry>(); var sut = new AmqpSubscriptionBuilder(); sut.RouteTo <string>("test1", "test1"); sut.RouteTo <string>("test2", "test2"); ISubscriptionTag publishingTag = sut.Build(registry); A.CallTo(() => registry.Subscribe <string>(A <ISubscriber> .Ignored, A <int> .Ignored)).MustHaveHappenedTwiceExactly(); }
public void CanLinkTo() { IAmqpConnectionFactory connectionFactory = A.Fake <IAmqpConnectionFactory>(); AmqpMessageBuilder messageBuilder = A.Fake <AmqpMessageBuilder>(); ISourceBlock <IMessage> sourceBlock = A.Fake <ISourceBlock <IMessage> >(); IConnection connection = A.Fake <IConnection>(); IModel channel = A.Fake <IModel>(); A.CallTo(() => connectionFactory.CreateConnection()).Returns(connection); A.CallTo(() => connection.CreateModel()).Returns(channel); var sut = new AmqpSender(connectionFactory, messageBuilder, new LogServiceProvider()); ISubscriptionTag tag = sut.SubscribeTo(sourceBlock); tag.Id.Should().NotBeNull(); }
public ISubscriptionTag Subscribe <T>(ISubscriber subscriber, int queueCapacity = 1) { DataflowBlockOptions queueOptions = new DataflowBlockOptions { BoundedCapacity = queueCapacity }; MessageBuffer workerQueue = new MessageBuffer(queueOptions); ISubscriptionTag subscriberTag = subscriber.SubscribeTo(workerQueue); ISubscriptionTag dispatcherTag = this.LinkDispatcherTo <T>(workerQueue); subscriberTag = new CompositeSubscriptionTag(Guid.NewGuid().ToString(), subscriberTag, dispatcherTag); subscribers.AddOrUpdate(subscriberTag.Id, subscriberTag, (o, n) => n); return(subscriberTag); }
public ISubscriptionTag Subscribe <T>(ISubscriber subscriber, int queueCapacity = 1) { this.logService.Info("Creating subscription to {0} with the queue capacity equals: {1}.", typeof(T), queueCapacity); DataflowBlockOptions queueOptions = new DataflowBlockOptions { BoundedCapacity = queueCapacity }; MessageBuffer workerQueue = new MessageBuffer(queueOptions); ISubscriptionTag subscriberTag = subscriber.SubscribeTo(workerQueue); ISubscriptionTag dispatcherTag = this.LinkDispatcherTo <T>(workerQueue); subscriberTag = new CompositeSubscriptionTag(Guid.NewGuid().ToString(), subscriberTag, dispatcherTag); subscribers.AddOrUpdate(subscriberTag.Id, subscriberTag, (o, n) => n); return(subscriberTag); }
public void Unsubscribe(ISubscriptionTag tag) { this.logService.Info("Unsubscribeing a subscription."); tag.Dispose(); this.subscribers.TryRemove(tag.Id, out var subscriber); }
public bool IsSubscribed(ISubscriptionTag tag) { return(subscribers.ContainsKey(tag.Id)); }
public void Unsubscribe(ISubscriptionTag tag) { tag.Dispose(); this.subscribers.TryRemove(tag.Id, out var subscriber); }