当 servicebus 升级其系统时,我收到警告日志。
Setup of JMS message listener invoker failed for destination 'queue-name' - trying to recover. Cause: Local transactions cannot span multiple top-level entities such as queue or topic
这很奇怪,因为消息仍然从队列中发送和接收。有谁知道为什么会发生这种情况?
jmslistener 的设置也非常标准
@JmsListener(destination = "queue-name", containerFactory = "jmsListenerContainerFactory")
public void listenQueueName(){}
我尝试使用下面的代码使用
@JmsListener
注释设置 Spring JMS 消息侦听器,并且能够从队列接收消息。
代码:
MyJmsListener.java:
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
@Component
public class MyJmsListener {
@JmsListener(destination = "kamqueue", containerFactory = "jmsListenerContainerFactory")
public void listenQueueName(String message) {
System.out.println("Received message: " + message);
}
}
MyJmsListenerApplication.java:
import org.springframework.jms.core.JmsTemplate;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.jms.core.JmsTemplate;
@SpringBootApplication
public class MyJmsListenerApplication {
public static void main(String[] args) {
ConfigurableApplicationContext context = SpringApplication.run(MyJmsListenerApplication.class, args);
JmsTemplate jmsTemplate = context.getBean(JmsTemplate.class);
jmsTemplate.convertAndSend("kamqueue", "Hello, JMS Listener!");
context.close();
}
}
输出:
运行成功,收到队列消息如下,
参考:检查此链接以使用 Jms 监听器将消息发送到服务总线队列。