【问题标题】:ActiveMQ how to send async message inside method annotated with JmsListenerActiveMQ如何在使用JmsListener注释的方法内发送异步消息
【发布时间】:2018-03-23 04:27:02
【问题描述】:

我的目标很简单,我必须在收到来自 JmsListener 的消息后立即发送通知(关于进行中状态)。

到目前为止我所做的是在 yml 中设置异步发送

broker-url: tcp://localhost:61616?jms.useAsyncSend=true

什么都没有发生,显然它不会那样工作

我的问题是所有消息都在消息处理完毕后发送。它看起来像同步模式。

我的简化代码如下所示

@JmsListener(destination = "${messagesQueue}")
public void handleMessage(Message message){
   jmsTemplate.convertAndSend("statusQueue", Status.IN_PROGRESS);
   //... processing stuff
   //... onSuccess
   jmsTemplate.convertAndSend("statusQueue", Status.OK);

   //... onFailure
   jmsTemplate.convertAndSend("statusQueue", Status.ERROR);

}

我使用带有全自动配置的 Spring Boot

欢迎任何建议!我该怎么办?

【问题讨论】:

    标签: spring-boot jms activemq


    【解决方案1】:

    好的,我通过将初始正在进行的消息传递给另一个线程找到了解决方法。

    new Thread(() -> {
            jmsTemplate.convertAndSend("statusQueue", Status.IN_PROGRESS);
    }).start();
    

    看起来很难看,我认为它不是最终解决方案,但它可能对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      • 2014-08-02
      • 1970-01-01
      • 2015-11-25
      • 1970-01-01
      相关资源
      最近更新 更多