Spring integration Spring集成写入IBM MQ

Spring integration Spring集成写入IBM MQ,spring-integration,spring-jms,spring-integration-dsl,Spring Integration,Spring Jms,Spring Integration Dsl,使用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 createMessa

使用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
    true或false
  • 带/不带
    headerFilter

  • 所有测试都会在队列上给我一条JMS消息。如何让SI JMS编写纯文本消息?

    我使用本文的答案解决了这个问题

    工作版本为

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

    @ArtemBilam在2天内,当本网站允许我:-)