使用队列中的消息时,消息侦听器不起作用

2020-08-30 21:00发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家您好, 我正在研究如何使用...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家您好,

我正在研究如何使用Java使用企业消息传递服务来消费消息。

我从SAP提供的github存储库中克隆了代码。

https://github.com/SAP/enterprise-messaging-client- java-samples

样本消耗是阻塞呼叫。 而且工作正常。 我刚刚修改了代码以异步接收消息。

但是它不起作用。 队列 Queue_test 中的消息未使用。 您能帮忙看看这个问题吗?

这是代码:

 try(Connection connection = connectionFactory.createConnection();
         会话会话= connection.createSession(false,Session.AUTO_ACKNOWLEDGE)){
     connection.start();
     队列队列= session.createQueue(QUEUE_PREFIX +" Queue_test");
     MessageConsumer消费者= session.createConsumer(queue);
    //consumer.setMessageListener(new MyMessageListener());
     Consumer.setMessageListener(new MessageListener(){//注册一个侦听器以异步接收消息
        
         @Override
         公共无效onMessage(消息){
             log.info("收到消息:" +消息);
             if(TextMessage的消息实例){
                 尝试{
                     TextMessage messageText =(TextMessage)消息;
                     log.info("收到消息:" + messageText.getText());
                    //message.acknowledge();
                 } catch(JMSException e){
                     log.error(e.getMessage(),e);
                 }
             }
         }
     });
 } catch(JMSException e){
     log.error("无法接收消息。",e);
 } 

谢谢

杰里

2条回答
DafaDDDa
2020-08-30 21:18

谢谢。 你节省了我的时间。

解决方法是在启动连接后,线程休眠一会儿。

 connection.start();
  Thread.sleep(10000); 

或者不关闭会话(仅用于测试)。

一周热门 更多>