我的目标很简单我必须在从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);
}
我使用全自动配置的春季启动
欢迎任何建议!我该怎么办?
答案 0 :(得分:0)
好的,我通过将初始进行中的消息传递给另一个线程找到了解决方法。
new Thread(() -> {
jmsTemplate.convertAndSend("statusQueue", Status.IN_PROGRESS);
}).start();
看起来丑陋,我不认为它的最终解决方案,但它可能会帮助其他人。