【问题标题】:WebSphere MQ Content Enricher in JavaJava 中的 WebSphere MQ 内容丰富器
【发布时间】:2014-02-12 21:11:14
【问题描述】:

您将如何使用 Java 在 WebSphere MQ 中实现 Content Enricher?

鉴于现有的输入消息是从队列中提供的,以下是我的一些想法,没有一个让我满意:

  1. 深度克隆消息对象。 Here 解释了它是如何完成的,但我也找不到 javax.jms.Message 类的clone() 或serialize() 方法。
  2. 获取原始消息,使用setXXXProperty() 设置附加属性并发送 向前。这会引发异常,提示消息是 只读。
  3. 创建一条新消息,遍历 现有消息并将它们设置为新消息。 getPropertyNames() 可以帮助做到这一点,但它什么也没说 类型的属性,因此这些信息将会丢失。

【问题讨论】:

标签: java jms messaging ibm-mq


【解决方案1】:

简而言之,IBM 集成总线可以在消息流中做到这一点……但让我也提供一个 WMQ Java 答案:

可以修改接收到的消息对象并将其发回......您需要做的就是从该消息中读取您需要的所有内容到某个 java 对象。例如,您可以将 Map 用于 Properties。然后调用 clearProperties() 然后设置修改后的属性。调用 clearProperties() 后 readonly 问题消失 (http://docs.oracle.com/javaee/5/api/javax/jms/Message.html#clearProperties%28%29)

因此,混合使用 (2) 和 (3) 有助于解决问题。

【讨论】:

  • 当前任务的 Message Broker 太过分了。
  • 尼拉吉,你是对的。对方法 #2 的更正:建议使用 setObjectProperty(),而不是使用 setXXXProperty(),其中 XXX 是类型的名称。这可确保属性保留其类型。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 2013-10-06
  • 2020-11-14
  • 1970-01-01
  • 2022-08-07
  • 1970-01-01
  • 2021-11-14
相关资源
最近更新 更多