ActiveMQ 如何在用 JmsListener 注释的方法内发送异步消息
ActiveMQ how to send async message inside method annotated with JmsListener
我的目标很简单,我必须在收到来自 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 全自动配置启动
欢迎任何建议!我该怎么办?
好的,我通过将初始进行中消息传递给另一个线程找到了解决方法。
new Thread(() -> {
jmsTemplate.convertAndSend("statusQueue", Status.IN_PROGRESS);
}).start();
看起来很丑,我不认为它是最终解决方案,但它可能对其他人有帮助。
我的目标很简单,我必须在收到来自 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 全自动配置启动
欢迎任何建议!我该怎么办?
好的,我通过将初始进行中消息传递给另一个线程找到了解决方法。
new Thread(() -> {
jmsTemplate.convertAndSend("statusQueue", Status.IN_PROGRESS);
}).start();
看起来很丑,我不认为它是最终解决方案,但它可能对其他人有帮助。