【问题标题】:Message driven POJO with spring. Can't receive the message带有弹簧的消息驱动 POJO。收不到消息
【发布时间】:2019-05-27 19:47:14
【问题描述】:

我在 Tomcat 上部署的应用程序正在尝试从远程队列发送和接收消息。

我已经成功地向远程队列发送了一些消息。现在我正在尝试构建消息侦听器容器,但是我的 onMessage(从未调用方法)不明白我缺少什么。

这是我的配置

<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="connectionFactory" />
    <property name="destinationResolver" ref="destinationResolver" />
</bean>

<bean id="connectionFactory" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
    <property name="targetConnectionFactory" ref="targetConnectionFactory"/>
    <property name="username" value="user"/>
    <property name="password" value="pass"/>
</bean>

<bean id="targetConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiTemplate" ref="jndiTemplate" />
    <property name="jndiName" value="MY_TEST_QUEUE" />
    <property name="proxyInterface" value="javax.jms.ConnectionFactory"/>
</bean>

<bean id="destinationResolver" class="org.springframework.jms.support.destination.JndiDestinationResolver">
    <property name="jndiTemplate" ref="jndiTemplate" />
    <property name="cache" value="true" />
</bean>

<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
    <property name="environment">
        <props>
            <prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
            <prop key="java.naming.provider.url">t3://host:port</prop>
        </props>
    </property>
</bean>

<bean id="messageListener" class="com.package.MyCustomMDB" />

<bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="connectionFactory" ref="connectionFactory"/>
    <property name="destinationName" value="MY_TEST_QUEUE"/>
    <property name="destinationResolver" ref="destinationResolver" />
    <property name="messageListener" ref="messageListener" />
</bean>

以及mdb的实现

public class MyCustomMDB implements MessageListener {
@Override
public void onMessage(Message message) {
    System.out.println(message.toString());
}}

你能告诉我我哪里做错了吗?

【问题讨论】:

    标签: spring jms spring-jms message-driven-bean


    【解决方案1】:

    您将MY_TEST_QUEUE 用于两者targetConnectionFactoryjndiNamejmsContainerdestinationNametargetConnectionFactoryjndiName 应该是指连接工厂的名称而不是队列。

    【讨论】:

      猜你喜欢
      • 2018-11-21
      • 2018-10-19
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多