public void LinkSubscriber(Session session, HostItemSubscriber subscriber, ISubscriptionSettings subscriptionSettings) { var topicAttribute = (TopicAttribute)subscriber.HostItemAttribute; // Determine if the host application has provided a specific subscription // that should be used for the name specified in code. string hostName = subscriber.HostAttribute.HostName; var mapping = new SubscriptionMapping(hostName, topicAttribute.TopicName, topicAttribute.SubscriptionName); string subscriptionName = subscriptionSettings.GetMappedSubscription(mapping) ?? topicAttribute.SubscriptionName; var logger = LoggerFactory.CreateLogger <TopicSubscriberLinker>(); logger.LogInformation( "Subscribing to topic {topicName} as subscription {subscriptionName}", topicAttribute.TopicName, subscriptionName); // Create a AMQP receiver link used to register handler method: var receiverLink = new ReceiverLink(session, Guid.NewGuid().ToString(), $"{topicAttribute.TopicName}/Subscriptions/{subscriptionName}"); ReceiveMessages(subscriber, receiverLink); }
public void CannotSpecifyDuplicationMapping() { var settings = new SubscriptionSettingsBase(); var mapping = new SubscriptionMapping("NS1", "T1", "S1", "MS1"); Assert.Throws <InvalidOperationException>( () => settings.AddMapping(mapping, mapping)); }
public void NonExistentMappingReturnsNull() { var settings = new SubscriptionSettingsBase(); var mapping = new SubscriptionMapping("NS1", "T1", "S1", "MS1"); var mappedName = settings.GetMappedSubscription(mapping); mappedName.Should().BeNull(); }
public void CanAddSubscriptionMapping() { var settings = new SubscriptionSettingsBase(); var mapping = new SubscriptionMapping("NS1", "T1", "S1", "MS1"); settings.AddMapping(mapping); var mappedName = settings.GetMappedSubscription(mapping); mappedName.Should().NotBeNull(); mappedName.Should().Be("MS1"); }
/// <summary> /// On startup send a "subscribe" message for the specified type /// to the specified destination. /// </summary> public void Subscribe(Type type) { SubscriptionMapping.Add(type); }