WebSphere MQ Content Enricher in Java



您将如何使用 Java 在 WebSphere MQ 中实现内容丰富器?

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

  1. 深层克隆消息对象。这是如何完成的解释,但我也找不到 clone()serialize() javax.jms.Message 类的方法。
  2. 获取原始消息,使用 setXXXProperty() 设置其他属性并发送向前。这将引发一个异常,表明该消息是只读。
  3. 创建新消息,循环访问现有消息并将其设置为新消息。 getPropertyNames()可以帮助做到这一点,但它没有说明属性的类型,因此此信息将丢失。

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

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

因此,(2)和(3)的混合可以帮助解决问题。

最新更新