【问题标题】:Extract jms text content提取jms文本内容
【发布时间】:2018-05-15 01:07:24
【问题描述】:

我只想从 jms 消息中提取不带标题和属性的 jms 消息文本。 提取JMS头:msg.getJMSCorrelationID(); 提取JMS属性:jmsMessage.getPropertyNames() 但是如何只从消息中获取文本值呢? 在下面的示例消息中,我只想提取“hello queue”。是否有 java 函数可以做到这一点?

【问题讨论】:

标签: java jms message-queue


【解决方案1】:

如果消息体是文本消息(纯文本或 XML),可以像下面这样提取。

String msgBody = ((TextMessage) message).getText();

JMS 2.0 API 在Message 接口中公开了额外的方法<T> T getBody(Class<T> c)

如果您的消息代理或源符合 JMS 2.0,那么我们会以一种更简洁的方式提取消息正文,而无需进行对象转换,如下所示。

String msgBody = message.getBody(String.class);

查看this post了解更多详情。

【讨论】:

  • 我得到了这个工作 msg.getText() 。也感谢@user3714601。
  • 很高兴听到.. 如果您的 Broker 是 JMS 2.0 投诉,您也可以使用新方法。如果有用,请接受答案..
  • 第一个解决方案以前对我有用(我使用的是支持 JMS 1.1 的 AMQ 代理),但现在它在运行时甚至在收到任何消息之前都会抛出此错误:java.lang.ClassCastException: class org.apache.activemq.command.ActiveMQBytesMessage cannot be cast to class javax.jms.TextMessage
  • @dko 您可能需要使用 instanceof 来查看您的 JMS 消息属于哪个层次结构。有几个,常见的是 BytesMessage 和 TextMessage。
猜你喜欢
  • 2013-02-05
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多