Java MQ JMS消息ID不返回任何文本消息以及如何以正确格式写入MQ JMSCOrrationID
我测试了一个独立的JMS客户机,它将Java MQ JMS消息ID不返回任何文本消息以及如何以正确格式写入MQ JMSCOrrationID,java,jms,ibm-mq,Java,Jms,Ibm Mq,我测试了一个独立的JMS客户机,它将TextMessage传递到IBM MQ上的队列,得到了以下消息id,但有错误: ID:414D5120424357303241314202020205BC6BD3E25423865 java.lang.RuntimeException:没有文本消息 我用发送了一条TextMessage,这是为了测试,但为什么我没有收到TextMessage?在此代码运行之前,队列中没有其他消息 如果文本消息成功,如何在Java中以可读格式读取消息Id(发送请求消息Id和回复
TextMessage
传递到IBM MQ上的队列,得到了以下消息id,但有错误:
ID:414D5120424357303241314202020205BC6BD3E25423865
java.lang.RuntimeException:没有文本消息
发送了一条TextMessage
,这是为了测试,但为什么我没有收到TextMessage
?在此代码运行之前,队列中没有其他消息
在您的请求-应答用例中,请求客户端发送的消息类型与它将接收的消息类型没有直接关系。请求客户端接收的消息类型取决于响应客户端发送的消息
至于从IBM MQ实现中以字符串形式获取消息ID,您可以参考。在您的请求-应答用例中,请求客户端发送的消息类型与它将接收的消息类型没有直接关系。请求客户端接收的消息类型取决于响应客户端发送的消息
至于从IBM MQ实现中以
字符串形式获取消息ID,您可以参考。这是否仅仅是因为您的消息正在从队列中过期
我看到您将消息过期时间设置为2秒。许多应答应用程序将剩余的到期值复制到应答消息中。因此,如果读取请求并向您发送回复的应用程序在发送请求后的2秒内没有读取您的请求,或者如果读取请求并在剩余到期日内进行回复,并且回复没有返回给您使用,则该应用程序将从队列中消失
尝试将到期时间增加到更高的值
还请注意,您通过两种不同的方法设置相同的到期值,一种是生产者发送的所有消息的默认值,另一种是每消息设置
这将为生产者发送的所有邮件设置默认到期日期:
queueSender.setTimeToLive(2*1000);
这将设置您发送的特定邮件的到期日,并将覆盖队列发送者.setTimeToLive
,因此您只需要其中一行
textMessage.setJMSExpiration(2*1000);//message expiration
这可能仅仅是因为您的消息正在从队列中过期吗
我看到您将消息过期时间设置为2秒。许多应答应用程序将剩余的到期值复制到应答消息中。因此,如果读取请求并向您发送回复的应用程序在发送请求后的2秒内没有读取您的请求,或者如果读取请求并在剩余到期日内进行回复,并且回复没有返回给您使用,则该应用程序将从队列中消失
尝试将到期时间增加到更高的值
还请注意,您通过两种不同的方法设置相同的到期值,一种是生产者发送的所有消息的默认值,另一种是每消息设置
这将为生产者发送的所有邮件设置默认到期日期:
queueSender.setTimeToLive(2*1000);
这将设置您发送的特定邮件的到期日,并将覆盖队列发送者.setTimeToLive
,因此您只需要其中一行
textMessage.setJMSExpiration(2*1000);//message expiration
您的会话是事务性的吗?
如果是,则在事务为“提交”之前,您的消息在队列上不“可见”,并且您从不commit
…
我很想知道当你测试它的类时,消息的内容是什么。它是空的吗?
receive
是立即返回还是仅在超时过期后返回(在您的情况下为60*1000ms)?
Denis您的会话是事务性的吗?
如果是,则在事务为“提交”之前,您的消息在队列上不“可见”,并且您从不commit
…
我很想知道当你测试它的类时,消息的内容是什么。它是空的吗?
receive
是立即返回还是仅在超时过期后返回(在您的情况下为60*1000ms)?
Denis哪个代理服务?Receive call已返回。意味着它找到了一条消息。发送消息之前,您确定队列中没有其他消息吗?有关messageid,请参阅以下链接:IBM MQ broker service是发送消息之前队列中没有其他消息哪个broker service?Receive调用已返回。意味着它找到了一条消息。发送消息之前,您确定队列中没有其他消息吗?有关messageid,请参阅以下链接:IBM MQ broker Service是发送消息之前队列中没有其他消息消息消息消息会立即返回,我怀疑他们是否希望消息采用某种格式,如果该格式不存在,他们将无法发送消息来自数据库的消息数据,并传递我在代码queueConnection.createQueueSession中写入的数据(false,Session.AUTO_ACKNOWLEDGE);这意味着非事务性正确,请纠正我,因此在我的情况下,我需要事务性还是非事务性,如果事务性我需要更改以下代码queueConn.createQueueSession(true,Session.DUPS\u OK\u ACKNOWLEDGE);然后到queueSession.commit();如果Transact字段为true,则第二个字段无关紧要,它将被忽略,仅当Transact字段为false时才适用。在第二个字段中有一个特殊的值Session.transact
,您可以使用它来指示会话已被事务处理,但这只是一个占位符,除了将transact设置为true之外,它什么也不做。@谢谢。如果我设置(true,Session.transact)我是否需要queuesession.commit更正我是的,任何时候进行事务处理都需要提交。消息会立即返回,我怀疑他们是否希望消息采用某种格式,如果该格式不存在,他们就不会发送正确的消息。请阅读消息数据