【问题标题】:How to implement synchronous Request-Response app using activeMQ NMS and C#?如何使用 activeMQ NMS 和 C# 实现同步请求响应应用程序?
【发布时间】:2012-05-01 00:16:04
【问题描述】:

我可以与生产者一起向队列('test.queue')发送消息(我也可以在另一端收到相同的消息) 但是我无法使用 consumer.receive() 方法从回复目的地('confirm')收到回复消息。 没有错误。但消费者没有收到任何消息。请让我摆脱它。 代码如下:-

    class Program
{
    private const String URI = "tcp://localhost:61616";
    private const String DESTINATION = "test.queue";
    static void Main(String[] args)
    {
        ConnectionFactory connectionFactory = new ConnectionFactory(URI);
        connectionFactory.ClientId = connectionFactory.ClientIdGenerator.GenerateId(); ;
        IMessageProducer prod;
        String s = String.Empty;
        while (s.ToLower() != "exit")
        {
            s = Console.ReadLine();
            ISession ses = connectionFactory.CreateConnection().CreateSession();
            prod = ses.CreateProducer();
            IMessage msg=ses.CreateTextMessage(s);
            NmsDestinationAccessor destinationResolver = new NmsDestinationAccessor();
            IDestination destination = destinationResolver.ResolveDestinationName(ses, DESTINATION);
            IDestination replyDestination = destinationResolver.ResolveDestinationName(ses, "confirm");
            IMessageConsumer consumer = ses.CreateConsumer(replyDestination);
            prod.Send(destination, msg);
            IMessage im= consumer.Receive();
            ses.Commit();
            Console.WriteLine(im.ToString());
        }
    }
}

【问题讨论】:

  • 请注意,它应该是消费者同步接收

标签: c# .net jms activemq nms


【解决方案1】:

我不是 activeMQ 专家,但我知道在大多数 JMS 实现中(我认为 NMS 几乎遵循 1:1),您需要在连接上调用 Start() 以允许开始消费

【讨论】:

  • 这是正确的,如果没有在 Connection 上调用 start(),消费者将不会收到任何消息。
猜你喜欢
  • 1970-01-01
  • 2012-06-26
  • 1970-01-01
  • 2017-10-21
  • 2016-07-18
  • 2020-02-14
  • 2011-06-03
  • 2021-01-08
  • 1970-01-01
相关资源
最近更新 更多