【问题标题】:Spring Integration with JMS configuration与 JMS 配置的 Spring 集成
【发布时间】:2012-06-14 07:54:40
【问题描述】:

我正在尝试使用 JMS 运行基本的 Spring Integration 配置。

问题是我似乎正在建立连接(根据日志),但我没有收到关于我的主题的任何消息。

这是我的配置:

<!-- Channels -->
<jms:channel id="inputChannel" queue-name="test.queue" connection-factory="connectionFactory"/>

<!-- Consumers -->    
<jms:inbound-channel-adapter id="jmsIn" destination="requestQueue" channel="inputChannel" extract-payload="true" connection-factory="connectionFactory">
    <integration:poller time-unit="SECONDS" fixed-rate="5"/>
</jms:inbound-channel-adapter>

<integration:service-activator id="testActivator" input-channel="inputChannel" ref="testServiceActivator" auto-startup="true" method="handle">
</integration:service-activator>

<!-- Bean definitions -->
<bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
    <property name="targetConnectionFactory">
        <bean class="org.apache.activemq.ActiveMQConnectionFactory">
            <property name="brokerURL" value="tcp://127.0.0.1:61616"/>             
        </bean>
    </property>
    <property name="sessionCacheSize" value="10"/>
    <property name="cacheProducers" value="false"/>
</bean>

<bean id="requestQueue" class="org.apache.activemq.command.ActiveMQQueue">
    <constructor-arg name="name" value="test.topic"/>
</bean>

<bean id="testServiceActivator" class="com.paddypower.financials.integration.PriceDistributionServiceActivator"/>

我已经在根记录器上启用了 DEBUG 级别,它说 jmsIn 已成功启动并且它已连接到 ActiveMQ 服务器,但我没有收到任何消息,无论是 service-activator 还是 @ 987654324@.

我还可以看到生产者正在通过 ActiveMQ Web 界面发送消息。

那么任何人都可以看到配置有什么问题或知道我可以进一步调试它的方法吗?

谢谢,

【问题讨论】:

  • 问题@Simeon:您提到“test.topic”是一个主题,但 requestQueue 被定义为一个队列 - 为什么它不是 ActiveMQTopic?
  • 尝试使用消息驱动通道适配器(通常更有效)并设置 TRACE 级别日志记录。
  • @BijuKunjummen 我刚刚找到它,你是对的,这是我将实现更改为主题的问题,现在一切正常。请添加一个答案,以便我接受它:)
  • @GaryRussell 如何为收到消息时调用的消息驱动通道适配器定义一个侦听器或服务?

标签: java spring jms spring-integration


【解决方案1】:

将 requestQueue 的 bean 定义从 ActiveMQQueue 更改为 ActiveMQTopic 应该可以解决此问题。

<bean id="requestQueue" class="org.apache.activemq.command.ActiveMQTopic">
    <constructor-arg name="name" value="test.topic"/>
</bean>

【讨论】:

  • 为避免进一步混淆,我还建议将 bean 重命名为“requestTopic”;)
  • @mfisher 完成。感谢您的提醒:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-06
  • 1970-01-01
  • 2015-01-19
  • 2012-02-24
  • 2014-08-23
  • 2013-01-06
  • 1970-01-01
相关资源
最近更新 更多