java - Spring JMS开始根据请求监听jms队列

标签 java spring jms spring-jms

Spring提供了@JMSListener注解来监听来自特定队列的消息。还有一个替代方案 implement JmsListenerConfigurer并注册一个MessageListener

在这两种情况下,在应用程序启动时都必须知道队列的名称,可以通过代码中的硬编码或通过属性来实现。

有没有办法监听一个队列,其名称在应用程序启动后很晚才知道?

最佳答案

这应该有效。

  1. 使用虚拟队列名称和 id 配置 @JmsListener
  2. 配置listener container factory autoStartup false。
  3. 准备好后,使用 JmsListenerEndpointRegistry 中的 id 获取对监听器容器的引用(自动将注册表连接到您的应用并调用 getListenerContainer( id))。
  4. 将容器转换为 AbstractMessageListenerContainer 并使用所需队列调用 setDestinationName(或 setDestination)。
  5. start() 它。

关于java - Spring JMS开始根据请求监听jms队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40791567/

相关文章:

java - 缺少使用 org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder 的方法

java - 如何选择 datetime mysql 类型作为 java.time.LocalDateTime?

java - Spring StoredProcedure 结果集值修剪

java - 可以在 JSR 330 中将 @Inject 设为可选(如 @Autowire(required=false) 吗?

java - Hornetq 大消息填满磁盘空间

java - 多线程JMS代码: CLIENT_ACKNOWLEDGE or transacted session

java - JMS多线程处理

java - 重叠面板 Swing

java - 如何使用 GWT 或 Javascript 强调 DIV 内的文本 (innerText) :

Java - JScience 定义一个新单元