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

标签 java ibm-mq spring-jms jmstemplate

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

由于我的代理是 IBM MQ Series,因此我需要更改传出 XML 消息中的编码值,因此我确信代理能够理解该消息。

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

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

谢谢

最佳答案

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

使用 MarshallingMessageConverter 配置您的 JmsTemplate使用 Jaxb2Marshaller您可以在其中设置编码器属性 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);
...

关于java - 在 JMS 消息上添加传出拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56986611/

相关文章:

ibm-mq - WebSphere MQ 中的 MQRC 资源问题

java - 在 Spring Boot 上动态修改 @JMSListener 目标

java - 在 64 位机器上运行时出现 NoClassDefFoundError

java - 正确部署后消息驱动 Bean 不使用消息

sql-server - 如何将消息从 SQL Server sp 放入 Websphere MQ 队列?

spring - 来自 jms :listener-container in JavaConfig? 的目标类型是什么

java - ClassNotFoundException : com. ibm.mq.jms.MQConnectionFactory(Websphere MQ 7.5 + spring jms + maven tomcat 7 插件)

java - 如何在 java 中从上到下向我的框架添加 4 个面板?

java - Hibernate 抛出 java.lang.NoSuchMethodError : org. hibernate.Session.createQuery

java - Gradle setupBuild 不转换 Maven pom.xml 文件