Exemplo 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);
        }