public IChannel GetReceivingTopicChannel(string exchange, string routingKey, IConsumeMessages receiver)
        {
            var channel = GetInstance();
            channel.ExchangeDeclare(exchange, "topic");
            string queueName = channel.QueueDeclare();
            channel.QueueBind(queueName, exchange, routingKey);
            IConsumer consumer = channel.GetConsumer();
            consumer.AddReceiver(receiver);
            channel.BasicConsume(queueName, false, consumer);

            return channel;
        }
        public void AddReceiver(IConsumeMessages receiver)
        {
            Consumer.Received += (model, ea) =>
            {
                string body = Encoding.UTF8.GetString(ea.Body);
                string routingKey = ea.RoutingKey;

                var message = new Message(body, routingKey);

                receiver.Consume(message);
            };
        }
示例#3
0
 public Service(IReceiveTopicsFactory topicReceiverFactory, IConsumeMessages consumer)
 {
     _topicReceiverFactory = topicReceiverFactory;
     _consumer = consumer;
 }