public void DirectReplyWithDefaultExchange() { const String replyRoutingKey = "replyRoutingKey"; var message = new OutboundMessage <Bar>(new Bar()); message.SetReply(new DirectReplyConfiguration(replyRoutingKey)); var properties = message.BuildBasicProperties(StubResolver <Bar>(null).Object, StubDateTimeProvider().Object, new Mock <INewId>().Object); Assert.Equal("direct:///replyRoutingKey", properties.ReplyTo); }
public void FanoutReply() { const String replyExchangeName = "replyExchangeName"; var message = new OutboundMessage <Bar>(new Bar()); message.SetReply(new FanoutReplyConfiguration(replyExchangeName)); var properties = message.BuildBasicProperties(StubResolver <Bar>(null).Object, StubDateTimeProvider().Object, new Mock <INewId>().Object); Assert.Equal("fanout", properties.ReplyToAddress.ExchangeType); Assert.Equal(replyExchangeName, properties.ReplyToAddress.ExchangeName); Assert.Equal(String.Empty, properties.ReplyToAddress.RoutingKey); Assert.Equal("fanout://replyExchangeName/", properties.ReplyTo); }
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(); }