E 02/07/19-07:51:49.358 [-5] JMSListener 异常:java.lang.ClassCastException:com.ibm.jms.JMSMessage 无法转换为 javax.jms.TextMessage
E 02/07/19-07:51:49.358 [-5] JMSListener exception : java.lang.ClassCastException: com.ibm.jms.JMSMessage cannot be cast to javax.jms.TextMessage
E 02/07/19-07:51:49.358 [-5] JMSListener exception : java.lang.ClassCastException: com.ibm.jms.JMSMessage cannot be cast to javax.jms.TextMessage
这是一个棘手的问题。我们将 xml 消息放入队列中,我们的代码使用它没有问题。第二天,我们将另一条 xml 消息放入同一个队列,同样的代码抛出了这个错误。
我正在寻找关于如何从实际发生的事情中获取更多信息的建议,或者是否有其他人在 JMS 中遇到过间歇性的 class 强制转换异常。
请注意,并非所有 'XML' 消息都作为 JMS TextMessage 发送。我遇到过同样的事情。某些应用程序将决定将 XML 内容作为 JMS BytesMessage 发送给您(并将文本放入字节数组主体中)。因此,请确保您发送的是真正发送给您的 TextMessage。
查看此信息的一种方法是停止您的消费者并使用 MQExplorer 查看排队的消息:命名 属性 mcd.Msd 应该显示 jms_text 如果它是作为正确的 MQ 发送的JMS 文本消息。如果数据是从 non-JMS 应用程序接收的,则 MQ 格式很重要。如果格式为 MQFMT_STRING,消息将作为 JMS TextMessage 接收。否则,它作为 JMS BytesMessage 接收!
因此,要么更改您的发布者以将 format 的值设置为 MQFMT_STRING,要么更改您的消费者应用程序以删除对 TextMessage 的强制转换,同时接受 BytesMessages 并从正文的字节数组构造文本。
E 02/07/19-07:51:49.358 [-5] JMSListener exception : java.lang.ClassCastException: com.ibm.jms.JMSMessage cannot be cast to javax.jms.TextMessage
这是一个棘手的问题。我们将 xml 消息放入队列中,我们的代码使用它没有问题。第二天,我们将另一条 xml 消息放入同一个队列,同样的代码抛出了这个错误。
我正在寻找关于如何从实际发生的事情中获取更多信息的建议,或者是否有其他人在 JMS 中遇到过间歇性的 class 强制转换异常。
请注意,并非所有 'XML' 消息都作为 JMS TextMessage 发送。我遇到过同样的事情。某些应用程序将决定将 XML 内容作为 JMS BytesMessage 发送给您(并将文本放入字节数组主体中)。因此,请确保您发送的是真正发送给您的 TextMessage。
查看此信息的一种方法是停止您的消费者并使用 MQExplorer 查看排队的消息:命名 属性 mcd.Msd 应该显示 jms_text 如果它是作为正确的 MQ 发送的JMS 文本消息。如果数据是从 non-JMS 应用程序接收的,则 MQ 格式很重要。如果格式为 MQFMT_STRING,消息将作为 JMS TextMessage 接收。否则,它作为 JMS BytesMessage 接收!
因此,要么更改您的发布者以将 format 的值设置为 MQFMT_STRING,要么更改您的消费者应用程序以删除对 TextMessage 的强制转换,同时接受 BytesMessages 并从正文的字节数组构造文本。