JMS队列消息读取错误

JMS队列消息读取错误,jms,Jms,我正在使用jms队列,连接是使用jms队列正确创建的,但当开始从jms队列读取消息时,第一次并没有读取任何消息,但在第二次尝试(在循环中第二次迭代)时,将检索消息。 示例:在i=1时,如果(message instanceof TextMessage)返回false,则如下代码所示,但在i=2时,返回true,并且我们能够读取消息 for (int i = 1; i <= 6; i++) { message = (TextMessage) consumer.rece

我正在使用jms队列,连接是使用jms队列正确创建的,但当开始从jms队列读取消息时,第一次并没有读取任何消息,但在第二次尝试(在循环中第二次迭代)时,将检索消息。 示例:在i=1时,如果(message instanceof TextMessage)返回false,则如下代码所示,但在i=2时,返回true,并且我们能够读取消息

for (int i = 1; i <= 6; i++) {
            message = (TextMessage) consumer.receive(100);
            if (message instanceof TextMessage) {
                messageProcessed++;
                String msgValue = (String) message.getText();
                System.out.println(msgValue);
                XMLDomFromString(msgValue);
            }
        }

对于(int i=1;i请增加等待时间,因为由于网络延迟,您无法读取消息,例如:
message=(TextMessage)consumer.receive(1000);

将等待时间从100增加到1000,现在问题就解决了。

听起来很合理,您有100毫秒的超时时间,在某些不幸的情况下,这可能比到代理的往返时间要短。将超时时间增加到1000毫秒后,其工作正常。例如:message=(TextMessage)consumer.receive(1000);嗯,您需要检查.receive()是否返回NULL,这表示超时。在1秒内没有收到消息可能有一千个原因,您应该决定在这种情况下该怎么做。是否有理由在“for”循环中重复7次?如果您的应用程序设计允许,您可能希望使用consumer.receive()查看迭代7仅用于理解目的,并且您的体系结构不允许使用者无限期地等待。我们使用循环进行批处理..for(int i=1;i