java如何嵌套Spring JMS消息转换器
我想写一个MessageConverter类,它可以包装另一个MessageConverter。此MessageConverter将调用子转换器,该子转换器假定生成TextMessage。它将获取有效负载并对其进行GZIP压缩,从而创建一条BytesMessage,最终返回给发送方
问题在于写入fromMessage()。我可以将有效负载转换回字符串,但是我想创建一个“虚拟”文本消息,将字符串填充到其中,然后传递给子MessageConverter的fromMessage()方法。在这里,我遇到了麻烦,因为如果没有JMS会话对象,我无法创建TextMessage,而且在这种上下文中似乎根本无法获取会话
我可以创建额外的属性来将更多的内容连接到这个类,但看起来我甚至不能轻松地从JMSTemplate对象获得会话,我无法想象我还需要什么
我即将在这段代码中创建一个私有TextMessage实现,只是为了包装子MessageConverter的字符串。该类将需要大量的虚拟方法来充实接口,所有这些类型都让baby Jesus哭了
有人能提出更好的办法吗
# 1 楼答案
事实上,我做了其中一个:
让我渴望目标C。这怎么可能
# 2 楼答案
是否确实要将MessageConverter实例包装到其他MessageConverter实例中?MessageConverter的全部要点是将消息转换为其他消息(这不是JMS消息)。它并不是真正用来链接它们的(每一步都会生成一条虚假的JMS消息)
为什么不引入自己的界面呢
然后,您可以创建一个MessageConverter,调用其中一个(然后可以嵌套到任意深度)
然后,您可以将这些MessageBodyConverter对象链接到您喜欢的深度,并且您可以访问原始JMS消息(以获取头等等),而无需尝试创建消息的伪(可能不符合JMS)实现