当前位置: 首页 > 知识库问答 >
问题:

如何接收消息从IBMMQ JMS使用Spring引导连续?

祁英哲
2023-03-14

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

共有2个答案

罗寒
2023-03-14

您需要实现监听器为:

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
    }
  }
}
逄学潞
2023-03-14

在pom中添加“mq jms spring boot starter”依赖项。xml格式如下:

在应用程序中添加以下属性。亚马尔:

  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
    }
}
 类似资料:
  • 我浏览了RabbitTemplate的API。它只提供从队列中获取消息的receive方法。但是,无法获得具有特定关联ID的消息。你能帮我理解一下我在这里错过了什么吗。 目前,我正在使用ActiveMQ的JMS API接收消息,使用以下代码创建带有消息选择器的Consumer。希望对Spring AMQP和RabbitMQ执行同样的操作:

  • 我试图通过社交网络从亚马逊SES获得电子邮件回复(退回、投诉和交付)。在亚马逊SQS控制台上,我看到消息已经在队列中,所以我确信亚马逊上的结构设置是正确的。 然后,使用Laravel 5.5,按照官方指南,我设置了一个队列来听SQS。我跳过了将作业分配到队列的部分,因为这将由SNS完成。为了简单起见,在作业处理程序中,我只需要转储我收到的内容。作业如下所示: 其配置如下所示: 为安全起见,实际值隐

  • 我们面临着ActiveMQ及其消费者的随机问题。我们观察到,很少有消费者不接收消息,即使他们连接到ActiveMQ队列。但在消费者重启后,它工作正常。 我们在ActiveMQ端有一个名为testQueue的队列。消费者正试图将消息从该队列中解列。为此,我们正在使用Spring的DefaultMessageListenerContainer。消息正在从ActiveMQ代理传递到使用者节点。从tcpd

  • 我正在尝试使用下面的片段收听主题。然而,默认情况下它正在收听队列。在这种情况下没有xml配置。我完全依赖注释。此外,我完全依赖Spring Boot提供的AutoConfiguration。我不确定如何将目标类型设置为主题,在JmsListener中。Spring JMS大师请提供帮助。

  • 我已经用C语言编写了kafka消费者和生产者,使用的库是Library dkafka库。kafka代理版本是kafka_2.12-2.3.0。生产者正在成功生成消息,dr_msg_cb函数确认成功传递。但是,消费者没有收到来自代理的消息。有人能帮助进一步调试吗? 我可以看到,从消费者到代理的TCP连接已经建立。但TCPdump显示代理并没有向消费者发送任何数据。我在消费者代码上启用了调试,下面是消

  • 概述 为了能够让轻应用订阅号的开发者接收到用户在消息窗口的留言消息,开发者可以在管理后台设置消息服务器并开启接收用户对话消息模式。 设置消息服务器时接需要提供可用的接收消息的回调URL地址,为了让通信更加安全,建议使用https。 设置成功并开启了接收对话消息模式后,用户在轻应用或订阅号窗口里发送的消息会推送给设置的URL,服务器接收到消息后,可以通过异步发送消息接口给用户回复消息。 设置消息服务