繁体   English   中英

如何使用 spring boot 连续接收来自 IBM MQ JMS 的消息?

[英]How to receive messages from IBM MQ JMS using spring boot continuously?

我有 Spring Boot 应用程序,它接收 JSON 请求并将其推送到 IBM MQ JMS 队列中。 可以有 n 个 JSON 请求将被推送到队列中。 我的目标是处理队列中的每个请求。 如何监听队列并一一获取消息以使用 spring boot 进行处理?

您需要将侦听器实现为:

1:创建配置如下:

@Bean
public MQConnectionFactory mqConnectionFactory(){
  MQConnectionFactory connectionFactory = new MQConnectionFactory();
  connectionFactory.setHostName(); //mq host name
  connectionFactory.setPort(); // mq port
  connectionFactory.setQueueManager(); //mq queue manager
  connectionFactory.setChannel(); //mq channel name
  connectionFactory.setTransportType(1);
  connectionFactory.setSSLCipherSuite(); //tls cipher suite name
  return connectionFactory;
}


@Bean()
public DefaultMessageListenerContainer myMessageEventContainer() {
  DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
  container.setAutoStartup(true);
  container.setConnectionFactory(mqConnectionFactory);
  container.setDestinationName(//queue name//);
  container.setMessageListener(new MyEventListener());
  return container;
}

2:实现消息监听器:

public class MyEventListener implements MessageListener {

  @Override
  public void onMessage(Message message) {
    try {
      if (message instanceof TextMessage) {
        TextMessage textMessage = (TextMessage) message;
        String stringMessage = textMessage.getText();
        //do something with your message from queue
      }
    } catch (JMSException e) {
      //catch error
    }
  }
}

在 pom.xml 中添加 'mq-jms-spring-boot-starter' 依赖如下:

在 application.yaml 中添加以下属性:

  mq:
    queue-manager: queueManager
    conn-name: connName(port)
    channel: channelName
    ssl-cipher-suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 or whatever ur app supports
    use-i-b-m-cipher-mappings: true (if using topic otherwise skip this property)

将以下注释 @JmsListener 添加到您的侦听器方法中

@EnableJms
Public class Consumer{
   @JmsListener(destination = "QueueNameToListenTo")
    public void listener(Object message) {
       logger.info("message received {}",message);
       //do something
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM