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种组合;

  1. With/without configureJmsTemplate
  2. extractPayload 判断对错。
  3. With/without headerFilter

所有测试都给我一个关于 queue 的 JMS 消息。如何让 SI JMS 写入纯文本消息?

我使用此 post 中的答案解决了它 如何在向 MQ 发送消息时删除默认 Spring JMS 模板 headers?

工作版本是;

.handle(
   Jms
      .outboundAdapter(connectionFactory)
      .destination("queue:///" + myQueue + "?targetClient=1")
   )
.get();