java - 配置JmsListener执行顺序

标签 java spring-boot spring-jms

如果我在 Spring Boot 应用程序中有多个 @JmsListener 方法,是否有一种方法可以显式声明任一监听器在另一个监听器之前消耗其队列中的所有消息?

换句话说,如果我有

@JmsListener(destination = "queueOne") 
    public void processOrder1(String message) {. . .}

@JmsListener(destination = "queueTwo") 
    public void processOrder2(String message) {. . .}

是否有配置可以让 processOrder1() 运行完成,关闭它,然后运行 ​​processOrder2() ?或者 processOrder2() 总是在 processOrder1() 之后执行(这是调试器建议的)?或者它们是否以某种方式彼此独立地单独运行?

如果它们不能以这种方式配置,我想知道为什么不。

最佳答案

不进行配置 - 每个监听器都有自己独立的异步监听器容器。

您可以将容器工厂的 autoStartup 设置为 false 并以编程方式启动每个容器 - 使用监听器的 从容器注册表获取对容器的引用id 属性和 start()/stop() 它。

一个困难是你如何“知道”第一个已经完成了它的工作。

关于java - 配置JmsListener执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38355617/

相关文章:

java - 当我的数组中显然有数据时,出现 NullPointerException

Spring MVC : PUT and DELETE with a composite key

java - 堆栈在 ec2 实例上不存在错误,但在本地工作正常

java - DefaultMessageListenerContainer : is it possible to cache consumer when using global transactions

java - 用 Java 读取海量数据

java - Appengine 标准上的 Spring Boot

java - 如何在 javafx TreeView 中使某些节点变为粗体?

java - 将 JAXWS 应用程序从 Java 8 迁移到 Java 11

java - @JmsListener 的 JUnit 测试

Spring 4.1 @JmsListener 配置