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