我正在编写一个 Java 批处理,它正在侦听来自队列(Oracle AQ)的消息并将它们发送到另一个队列(Tibco EMS),在那里它们由 Tibco 进程(BW)处理。
问题是 Oracle AQ 驱动程序会自动向消息(JMSXGroupID、JMSXGroupSeq)添加一些属性,这些属性在 Tibco 进程处理时会导致错误,因为它们具有错误的值:JMSXGroupSeq 应该是 int 但设置为 null。尝试解析消息属性时,Tibco 陷入错误...
所以我想从所有消息中只删除这两个属性,但似乎 jms api 只提供 clearProperties() 方法但没有单个属性删除方法(我使用的是 javax.jms.Message 接口)。
目前,我可以看到两种解决方案:
为这两个属性设置正确的值,因为我假设 Tibco 不会进一步使用它们
读取所有属性并重建没有导致问题的 2 的消息。但是这种方法非常丑陋...
有没有人有任何其他的解决方案?