【问题标题】:Spring Boot + IBM MQ - Handle Correlation idSpring Boot + IBM MQ - 处理关联 ID
【发布时间】:2021-08-30 22:44:48
【问题描述】:

我在我的 java spring boot 应用程序中从远程 IBM MQ 队列获取消息。我需要发回处理后的消息。如何设置我发送回队列的响应的相关 ID。

MQ 配置

@Bean
public MQQueueConnectionFactory mqQueueConnectionFactory()  {

    MQQueueConnectionFactory mqQueueConnectionFactory = new MQQueueConnectionFactory();
    mqQueueConnectionFactory.setHostName(host);
    try {
        mqQueueConnectionFactory.setTargetClientMatching(true);
        mqQueueConnectionFactory.setCCSID(1208);
        mqQueueConnectionFactory.setTransportType(WMQConstants.WMQ_CM_CLIENT);
        mqQueueConnectionFactory.setChannel(channel);
        mqQueueConnectionFactory.setPort(port);
        mqQueueConnectionFactory.setQueueManager(queueManager);


    } catch (Exception e) {
        e.printStackTrace();
        System.out.println(e.getStackTrace().toString());
        logger.error("MqQueueConnectionFactory ", e);
    }
    return mqQueueConnectionFactory;
}

@Bean
UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter(
        MQQueueConnectionFactory mqQueueConnectionFactory) {
    UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter = new UserCredentialsConnectionFactoryAdapter();
    userCredentialsConnectionFactoryAdapter.setUsername(username);
    userCredentialsConnectionFactoryAdapter.setPassword(password);
    userCredentialsConnectionFactoryAdapter.setTargetConnectionFactory(mqQueueConnectionFactory);
    return userCredentialsConnectionFactoryAdapter;
}

@Bean
@Primary
public CachingConnectionFactory cachingConnectionFactory(
        UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter) {
    CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory();
    cachingConnectionFactory.setTargetConnectionFactory(userCredentialsConnectionFactoryAdapter);
    cachingConnectionFactory.setSessionCacheSize(500);
    cachingConnectionFactory.setReconnectOnException(true);
    return cachingConnectionFactory;
}

@Bean
public PlatformTransactionManager jmsTransactionManager(CachingConnectionFactory cachingConnectionFactory) {
    JmsTransactionManager jmsTransactionManager = new JmsTransactionManager();
    jmsTransactionManager.setConnectionFactory(cachingConnectionFactory);
    return jmsTransactionManager;
}

@Bean
public JmsOperations jmsOperations(CachingConnectionFactory cachingConnectionFactory) {
    JmsTemplate jmsTemplate = new JmsTemplate(cachingConnectionFactory);
    jmsTemplate.setReceiveTimeout(receiveTimeout);
    return jmsTemplate;
}

@Bean
public JmsListenerContainerFactory<?> myFactory(CachingConnectionFactory cachingConnectionFactory,
        DefaultJmsListenerContainerFactoryConfigurer configurer) {
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
    configurer.configure(factory, cachingConnectionFactory);
    return factory;
}

@Bean
public MessageConverter jacksonJmsMessageConverter() {
    MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
    converter.setTargetType(MessageType.TEXT);
    converter.setTypeIdPropertyName("_type");
    converter.setObjectMapper(getObjectMapper());
    return converter;
}

我正在使用注释从队列中接收消息并发回。但我需要设置响应的相关 id = 请求的消息 id。

@JmsListener(destination = "destination", containerFactory = "myFactory")
@SendTo("desination")
public void onMessage(Message message)

有什么建议吗?

【问题讨论】:

    标签: java spring spring-boot ibm-mq spring-jms


    【解决方案1】:

    对不起,我来晚了)

    @JmsListener(destination = "destination", containerFactory = "myFactory")
    @SendTo("desination")
    public Message onMessage(Message requestMessage, Session session) throws JMSException {
        ...
        Message responseMessage = jacksonJmsMessageConverter.toMessage(responsePojo, session);
        responseMessage.setJMSCorrelationID(requestMessage.getJMSCorrelationID());
        return responseMessage;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-20
      • 2019-06-15
      • 2020-09-29
      相关资源
      最近更新 更多