Spring集成写到IBM MQ

问题描述 投票:1回答:1

使用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种组合。

  1. 在没有 configureJmsTemplate
  2. extractPayload 真或假。
  3. 在没有 headerFilter

所有的测试都给我一个JMS消息的队列。我如何让SI JMS写一个纯文本消息?

spring-integration spring-jms spring-integration-dsl
1个回答
1
投票

我使用这个帖子的答案解决了这个问题 向MQ发送消息时,如何删除默认的Spring JMS模板头?

工作版是。

.handle(
   Jms
      .outboundAdapter(connectionFactory)
      .destination("queue:///" + myQueue + "?targetClient=1")
   )
.get();
© www.soinside.com 2019 - 2024. All rights reserved.