Example #1
0
        /// <inheritdoc />
        public Task SaveAsync(SubscriptionMessage subscriptionMessage)
        {
            var messageType      = subscriptionMessage.MessageType;
            var handlingEndpoint = subscriptionMessage.HandlingEndpointAddress;

            List <EndpointAddress> endpoints;

            if (this.subscriptions.TryGetValue(messageType, out endpoints))
            {
                if (endpoints.Any(e => e.QueueName == handlingEndpoint.QueueName))
                {
                    return(Task.CompletedTask);
                }

                endpoints.Add(handlingEndpoint);
            }
            else
            {
                this.subscriptions.Add(messageType, new List <EndpointAddress> {
                    handlingEndpoint
                });
            }

            return(Task.CompletedTask);
        }
        /// <inheritdoc />
        public async Task SaveAsync(SubscriptionMessage subscriptionMessage)
        {
            Guard.NotNull(() => subscriptionMessage);

            var messageType      = subscriptionMessage.MessageType;
            var handlingEndpoint = subscriptionMessage.HandlingEndpointAddress;

            List <EndpointAddress> endpoints;

            if (this.subscriptions.TryGetValue(messageType, out endpoints))
            {
                if (endpoints.Any(e => e.QueueName == handlingEndpoint.QueueName))
                {
                    return;
                }

                endpoints.Add(handlingEndpoint);
            }
            else
            {
                this.subscriptions.Add(messageType, new List <EndpointAddress> {
                    handlingEndpoint
                });
            }

            await this.SaveSubscriptionsToFileAsync().ConfigureAwait(false);
        }
Example #3
0
        public void CanCreateInstance()
        {
            var handlingEnpoint = new EndpointAddress("localEndpoint");
            var testee          = new SubscriptionMessage(handlingEnpoint, "SimpleDomain.TestDoubles.MyEvent");

            testee.HandlingEndpointAddress.Should().Be(handlingEnpoint);
            testee.MessageType.Should().Be("SimpleDomain.TestDoubles.MyEvent");

            testee.GetIntent().Should().Be(MessageIntent.SubscriptionMessage);
        }
Example #4
0
        public async Task CanStoreAndReceiveSubscriptions()
        {
            var @event = new ValueEvent(42);
            var testee = new InMemorySubscriptionStore();

            var firstSubscriptionMessage  = new SubscriptionMessage(new EndpointAddress("Queue1"), typeof(ValueEvent).FullName);
            var secondSubscriptionMessage = new SubscriptionMessage(new EndpointAddress("Queue2"), typeof(ValueEvent).FullName);

            await testee.SaveAsync(firstSubscriptionMessage).ConfigureAwait(false);

            await testee.SaveAsync(secondSubscriptionMessage).ConfigureAwait(false);

            var subscriptions = testee.GetSubscribedEndpoints(@event);

            subscriptions.Should()
            .Contain(address => address.QueueName == "Queue1").And
            .Contain(address => address.QueueName == "Queue2");
        }
Example #5
0
 private Task HandleSubscriptionMessageAsync(SubscriptionMessage subscriptionMessage)
 {
     return(this.Configuration.SubscriptionStore.SaveAsync(subscriptionMessage));
 }