Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        public void CannotSpecifyDuplicationMapping()
        {
            var settings = new SubscriptionSettingsBase();
            var mapping  = new SubscriptionMapping("NS1", "T1", "S1", "MS1");

            Assert.Throws <InvalidOperationException>(
                () => settings.AddMapping(mapping, mapping));
        }
Ejemplo n.º 3
0
        public void NonExistentMappingReturnsNull()
        {
            var settings = new SubscriptionSettingsBase();
            var mapping  = new SubscriptionMapping("NS1", "T1", "S1", "MS1");

            var mappedName = settings.GetMappedSubscription(mapping);

            mappedName.Should().BeNull();
        }
Ejemplo n.º 4
0
        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");
        }
Ejemplo n.º 5
0
 /// <summary>
 /// On startup send a "subscribe" message for the specified type
 /// to the specified destination.
 /// </summary>
 public void Subscribe(Type type)
 {
     SubscriptionMapping.Add(type);
 }