0

以下代码块用于将一组 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. 我们如何计算消息到达那里所需的总时间以及返回的响应?

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

4

2 回答 2

0

要回答您的问题:

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

  2. 您确实知道消息何时返回,方法是实现MessageListenerthen 每次onMessage()调用该方法时,一条新消息将准备好进行处理;

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

问候,

Y。

于 2012-08-13T11:04:39.270 回答
0

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

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

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

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

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

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

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

于 2012-08-13T10:56:30.320 回答