我正在某个项目中,正在构建要使用JmsTemplate
发送的一些JMS消息,该消息在Spring Boot应用程序中通过JNDI命名进行了初始化。
由于我的Broker是IBM MQ Series
,因此我需要更改传出XML消息中的编码值,因此我确定该Broker将理解该消息。
我没有在JmsTemplate
设置上看到任何地方,或者ConnectionFactory
JmsTemplate需要初始化,在其中放置一些传出拦截器。
如果有人有任何想法,解决方法或框架/库可以提供帮助,请随时给我一些提示。
谢谢
最佳答案
我假设您正在使用JAXB创建XML消息。
使用使用MarshallingMessageConverter的Jaxb2Marshaller配置JmsTemplate
,可在其中设置编组属性JAXB_ENCODING:
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);
...