在JMS消息上添加传出拦截器

时间:2019-07-11 10:00:06

标签: java ibm-mq spring-jms jmstemplate

我正在一个项目中,正在构建一些我想使用JmsTemplate发送的JMS消息,该消息是在Spring Boot应用中通过JNDI命名初始化的。

由于我的经纪人是IBM MQ Series,因此我需要更改传出XML消息中的编码值,因此我确定经纪人会理解该消息。

我没有在JmsTemplate设置上看到任何地方,或者ConnectionFactory JmsTemplate需要初始化,并在其中放置一些传出拦截器。

如果有人有任何想法,想法或解决方法或框架/库可以提供帮助,请随时给我一些提示。

谢谢

1 个答案:

答案 0 :(得分:2)

我假设您正在使用JAXB创建XML消息。

使用MarshallingMessageConverterJaxb2Marshaller配置JmsTemplate,在JAXB_ENCODING中可以设置编组器属性enter image description here

Jaxb2Marshaller jaxb2Marshaller = new Jaxb2Marshaller(); 
Map properties = new HashMap<String, String>();
properties.put(javax.xml.bind.Marshaller.JAXB_ENCODING, "YOUR-ENCODING");
jaxb2Marshaller.setMarshallerProperties(properties);
jaxb2Marshaller.setPackagesToScan("your.package");

JmsTemplate jms = new JmsTemplate(connectionFactory);
jms.setMessageConverter(new MarshallingMessageConverter(jaxb2Marshaller));
...
jms.convertAndSend(yourObject);
...