【问题标题】:Getting response after posting a JMS message发布 JMS 消息后获得响应
【发布时间】:2012-08-14 14:22:26
【问题描述】:

以下代码块用于将一组 JMS 消息发布到 EMS 服务器

            for(int i=1;i<=200;i++)
            {

                msg=myMessages.get(i); // myMessages is an Arraylist of TextMessages
                qsender = qsession.createSender((Queue)msg.getJMSDestination());
                qreceiver=qsession.createReceiver((Queue)msg.getJMSDestination());
                temp1 = qsession.createTemporaryQueue();
                responseConsumer = qsession.createConsumer(temp1);
                msg.setJMSReplyTo(temp1);
                msg.setJMSCorrelationID(msg.getJMSCorrelationID()+i);
                qsender.send(msg);

            }

由于这不是我开发的,所以我对此有一些疑问。

  1. 查询实际上做了什么?它只是发布消息而没有回应吗?
  2. 如果是,我们如何知道响应何时返回以及我们如何计算所用时间?
  3. 我们如何计算消息到达那里以及返回响应所需的总时间?

如果需要更多信息,请告诉我。

【问题讨论】:

  • 如果 "myMessages 是一个字符串数组列表",那么 "msg.setJMSReplyTo(temp1);" 不会编译。
  • @npe 已更新。 TextMessages 的 ArrayList。

标签: java jms response message


【解决方案1】:

它只是发布消息而没有回应吗?

是的。它还创建了一个发送者来发送消息和一个它似乎没有使用的接收者。

如果是,我们如何知道响应何时返回以及我们如何计算所用时间?

它为此创建一个临时队列和一个接收器。它期望另一端将消息发送到存储在“JMSReplyTo”中的队列名称

我们如何计算消息到达那里以及返回响应所需的总时间?

您可以让消费者获取时间并将其与发送第一条消息的时间相匹配。

恕我直言,一种更简单的方法是将发送的时间添加为属性并让服务返回。这样,您就可以在返回的消息中获得所需的所有信息。

【讨论】:

  • 它是否为每条消息创建一个临时队列?为它定义一个队列是否可取?我还要在 msg 中设置属性吗?我们如何获得响应消息返回的时间?我们必须实现 MessageListener 接口吗?
  • 它为每条消息创建一个临时队列。我会为每个会话创建一个,但您可能需要更改其他代码才能使其正常工作。您可以设置和获取消息的属性以传递并读取初始时间戳。您应该已经有一个 MessageListener 实现。
  • 谢谢。截至目前的代码没有 MessageListener 实现。由于该工具的目的是将消息放入队列中,我想这不是必需的吗?现在我需要得到响应,我想我必须实现它?
  • 我们如何“获取”消息的属性?如果我没记错,这必须在 Listener 中完成吗?如果是,那么我们如何识别消息来计算开始和结束时间?我知道问题太多了:-)
  • 有一段时间没做,所以一个快速的谷歌找到了我; setLongProperty 和 getLongProperty。我会添加 System.currentTimeMillis() 或 System.nanoTime()。设置发送消息前的时间,让响应者在回复中发送相同的时间,在侦听器中获取属性并与当前时间进行比较。
【解决方案2】:

回答你的问题:

  1. 是的,它只发布消息;

  2. 1234563
  3. 回答第三个问题有点复杂,但您可能希望在某种持久性存储中记录或写入消息发布的时间以及收到响应的时间(基于相关 ID,然后您就可以知道每条消息经过了多少时间);

问候,

是的。

【讨论】:

  • @Y 但是 msg 在 diff 迭代中会有所不同,是吗?如何将它从代码中给出的循环中拉出来?
  • 是的,我回答得太快了,没有看到目的地是依赖于消息的,很抱歉,我已经编辑了我的帖子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 2014-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多