示例#1
0
        public override Task ConsumeAsync(ConsumedMessage <Request> message)
        {
            return(Task.Factory
                   .StartNew(() =>
            {
                Console.WriteLine("[{0}]received '{1}' by '{2}' with correlation id {3}",
                                  message.ConsumerTag,
                                  message.Headers.MessageId,
                                  GetType().Name,
                                  message.Headers.CorrelationId);

                var exchange = _broker.DeclareDirectExchange(message.Headers
                                                             .ReplyConfiguration
                                                             .ExchangeName);
                var queue = _broker.DeclareQueue(message.Headers
                                                 .ReplyConfiguration
                                                 .RoutingKey);
                _broker.DeclareExchangeBinding(exchange,
                                               queue,
                                               message.Headers.ReplyConfiguration.RoutingKey);

                var outboundMessage = new OutboundMessage <Response>(new Response
                {
                    BarBar = message.Content.Bar * 2
                });
                outboundMessage.SetCorrelationId(message.Headers.CorrelationId);
                _connection.PublishAsync(outboundMessage,
                                         exchange,
                                         message.Headers.ReplyConfiguration.RoutingKey);
            }));
        }
        public void CorrelationId()
        {
            String correlationId = Guid.NewGuid().ToString();
            var    message       = new OutboundMessage <Bar>(new Bar());

            message.SetCorrelationId(correlationId);
            var properties = message.BuildBasicProperties(StubResolver <Bar>(null).Object,
                                                          StubDateTimeProvider().Object,
                                                          new Mock <INewId>().Object);

            Assert.Equal(correlationId, properties.CorrelationId);
        }
示例#3
0
        private static void Main(String[] args)
        {
            const String routingKey        = "request_routing_key";
            const String endpointUrl       = "amqp://*****:*****@localhost:5672/";
            const String replyQueueName    = "reply_to_queue";
            const String replyExchangeName = "reply_exchange";

            IMessageTypeResolver resolver = new MessageBindingResolver(typeof(Response).Assembly);

            var broker = Broker.New(_ =>
            {
                _.Endpoint(new Uri(endpointUrl, UriKind.Absolute));
                _.ResolveMessageTypeBy(resolver);
            });

            var exchange = broker.DeclareDirectExchange("request_exchange");
            var queue    = broker.DeclareQueue("request_queue");

            broker.DeclareExchangeBinding(exchange, queue, routingKey);
            broker.SubscribeByAtLeastOnce(queue, _ => _.Consumes(new RequestConsumer(endpointUrl)));

            var replyExchange = broker.DeclareDirectExchange(replyExchangeName);
            var replyQueue    = broker.DeclareQueue(replyQueueName);

            broker.DeclareExchangeBinding(replyExchange, replyQueue, replyQueueName);
            broker.SubscribeByAtLeastOnce(replyQueue, _ => _.Consumes(new ResponseConsumer()));

            var connection = broker.Connect();

            var message = new OutboundMessage <Request>(new Request {
                Bar = 42
            });

            message.SetCorrelationId(Guid.NewGuid().ToString());
            message.SetReply(new DirectReplyConfiguration(replyExchangeName, replyQueueName));
            connection.PublishAsync(message, exchange, routingKey);

            Console.ReadLine();
            connection.Dispose();
        }