每当升级到 azure servicebus 时,JMS 消息侦听器的设置都会失败

问题描述 投票:0回答:1

当 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(){}
azureservicebus spring-jms azure-servicebus-queues
1个回答
0
投票

我尝试使用下面的代码使用

@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();
    }
}

输出:

运行成功,收到队列消息如下,

enter image description here

参考:检查此链接以使用 Jms 监听器将消息发送到服务总线队列。

© www.soinside.com 2019 - 2024. All rights reserved.