【问题标题】:How can I allow multiple @JmsListener destinations for a single method如何为单个方法允许多个 @JmsListener 目标
【发布时间】:2020-03-05 17:10:54
【问题描述】:

我目前正在将 IBM Webshere 应用程序迁移到 Spring Boot。

作为其中的一部分,有一个 MDB 类需要转换为@JmsListener。这个 MDB 有一个方法可以监听多个队列。我想对多个目的地使用@JmsListener 做同样的事情。我看到了this thread,但这不起作用。

这是当前的 MDB 配置:

豆 1

<bean id="myAppabcResponseMDB" class="company.myApp.service.mdb.MyAppMessageListenerMDB"/>
    <bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="connectionFactory" ref="jmsConnectionFactory"/>
        <property name="destination" ref="myAppabcResponseDest"/>
        <property name="messageListener" ref="myAppabcResponseMDB"/>
        <property name="maxConcurrentConsumers" value="5"/>
        <property name="sessionTransacted" value="true"/>
        <property name="transactionManager" ref="transactionManager" />
        <property name="taskExecutor" ref="myTaskExecutor" />
      </bean>
      <bean id="myAppabcResponseDest" name="jms/myAppESBResponse" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="jms/myAppabcResponse"/>
        <property name="resourceRef" value="true"/>
      </bean>

<bean id="myAppRequestMDB" class="company.myApp.service.mdb.MyAppMessageListenerMDB"/>
  <bean id="jmsContainer2" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="jmsConnectionFactory"/>
    <property name="destination" ref="myAppRequestDest"/>
    <property name="messageListener" ref="myAppRequestMDB"/>
    <property name="maxConcurrentConsumers" value="1"/>
    <property name="sessionTransacted" value="true"/>
    <property name="transactionManager" ref="transactionManager" />
    <property name="taskExecutor" ref="myTaskExecutor" />
  </bean>
  <bean id="myAppRequestDest" name="jms/myAppRequest" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" value="jms/myAppRequest"/>
    <property name="resourceRef" value="true"/>
  </bean>

【问题讨论】:

  • 我已经用当前配置更新了问题。
  • 我使用的是 Springboot 2.1.7

标签: java spring-boot jms spring-jms


【解决方案1】:

@JmsListener 是 Java 8 上的可重复注解,因此您可以通过向其添加额外的 @JmsListener 声明将多个 JMS 目标与同一方法相关联。

https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#jms-annotated

【讨论】:

    猜你喜欢
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多