配置 JmsListener 的执行顺序

Configuring Order of JmsListener Execution

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

换句话说,如果我有

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

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

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

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

不适用于配置 - 每个侦听器都有自己独立的异步侦听器容器。

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

一个困难是如何"know"第一个已经完成它的工作。