Spring 写入 IBM MQ 的集成
Spring Integration writing to IBM MQ
使用 Boot 2.2.2 和 Spring Integration 5.2.2 通过 IBM MQ Series 9 与另一个应用程序交互;消息必须是纯文本(不是 JMS)。 SI 可以正确获取文本消息,但是我似乎无法在没有 JMS header.
的情况下将其放入 MQ
使用JMS 没有 SI,我可以使用;
写一个纯文本消息
jmsTemplate.send(myQueue, new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(message);
}
});
使用 SI 时我有以下内容;
@Bean
public IntegrationFlow toQueue(
ConnectionFactory connectionFactory,
@Value("${app.outQueue}") String myQueue
) {
return IntegrationFlows
.from("myIncomingChannel")
.headerFilter("*")
.handle(
Jms
.outboundAdapter(connectionFactory)
.configureJmsTemplate(jts -> jts.jmsMessageConverter(new SimpleMessageConverter()))
.extractPayload(true)
.destination(myQueue)
)
.get();
}
我尝试了8种组合;
- With/without
configureJmsTemplate
extractPayload
判断对错。
- With/without
headerFilter
所有测试都给我一个关于 queue 的 JMS 消息。如何让 SI JMS 写入纯文本消息?
我使用此 post 中的答案解决了它 如何在向 MQ 发送消息时删除默认 Spring JMS 模板 headers?
工作版本是;
.handle(
Jms
.outboundAdapter(connectionFactory)
.destination("queue:///" + myQueue + "?targetClient=1")
)
.get();
使用 Boot 2.2.2 和 Spring Integration 5.2.2 通过 IBM MQ Series 9 与另一个应用程序交互;消息必须是纯文本(不是 JMS)。 SI 可以正确获取文本消息,但是我似乎无法在没有 JMS header.
的情况下将其放入 MQ使用JMS 没有 SI,我可以使用;
写一个纯文本消息 jmsTemplate.send(myQueue, new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(message);
}
});
使用 SI 时我有以下内容;
@Bean
public IntegrationFlow toQueue(
ConnectionFactory connectionFactory,
@Value("${app.outQueue}") String myQueue
) {
return IntegrationFlows
.from("myIncomingChannel")
.headerFilter("*")
.handle(
Jms
.outboundAdapter(connectionFactory)
.configureJmsTemplate(jts -> jts.jmsMessageConverter(new SimpleMessageConverter()))
.extractPayload(true)
.destination(myQueue)
)
.get();
}
我尝试了8种组合;
- With/without
configureJmsTemplate
extractPayload
判断对错。- With/without
headerFilter
所有测试都给我一个关于 queue 的 JMS 消息。如何让 SI JMS 写入纯文本消息?
我使用此 post 中的答案解决了它 如何在向 MQ 发送消息时删除默认 Spring JMS 模板 headers?
工作版本是;
.handle(
Jms
.outboundAdapter(connectionFactory)
.destination("queue:///" + myQueue + "?targetClient=1")
)
.get();