ActiveMQ如何在使用JmsListener注释的方法内发送异步消息

时间:2018-03-22 14:20:39

标签: spring-boot jms activemq

我的目标很简单我必须在从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);

}

我使用全自动配置的春季启动

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

1 个答案:

答案 0 :(得分:0)

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

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

看起来丑陋,我不认为它的最终解决方案,但它可能会帮助其他人。