/// <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); }
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); }
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"); }
private Task HandleSubscriptionMessageAsync(SubscriptionMessage subscriptionMessage) { return(this.Configuration.SubscriptionStore.SaveAsync(subscriptionMessage)); }