使用Boot 2.2.2和Spring Integration 5.2.2通过IBM MQ Series 9与另一个应用程序交互;消息需要纯文本(不是JMS)。SI可以正确地获取文本消息,但是我似乎无法在没有JMS头的情况下将消息发送到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种组合。
configureJmsTemplate
extractPayload
真或假。headerFilter
所有的测试都给我一个JMS消息的队列。我如何让SI JMS写一个纯文本消息?
我使用这个帖子的答案解决了这个问题 向MQ发送消息时,如何删除默认的Spring JMS模板头?
工作版是。
.handle(
Jms
.outboundAdapter(connectionFactory)
.destination("queue:///" + myQueue + "?targetClient=1")
)
.get();