Mule ESB HornetQ JMS 消息未传递
Posted
技术标签:
【中文标题】Mule ESB HornetQ JMS 消息未传递【英文标题】:Mule ESB HornetQ JMS Message Not Delivered 【发布时间】:2014-02-02 21:51:22 【问题描述】:请耐心等待,因为我被困在最简单的 Mule ESB/JMS 用例上。我正在尝试让 Mule 应用程序接受来自现有 HornetQ 队列的传入消息。下面提供了我的 mule-config.xml。我的问题是这个;每当消息生产者向队列中添加消息时,HornetQ 都会报告该消息达到给定消息的最大重新传递尝试次数,并将其发送到死信队列 - 显然 Mule JMS 入站永远不会接受 -端点。这仅在 Mule 服务器运行时发生(重要的是要注意应用程序在 Mule 服务器中部署没有问题),当它不是时,提供商当然不会尝试任何预期的交付。我已经在其他应用程序中使用了 hornet 配置来将消息侦听器设置到同一个 HornetQ 实例而没有问题。任何帮助将不胜感激。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:jms="http://www.mulesoft.org/schema/mule/jms"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/3.4/mule.xsd
http://www.mulesoft.org/schema/mule/jms http://www.mulesoft.org/schema/mule/jms/3.4/mule-jms.xsd">
<beans:bean id="hornetConnectionFactory" class="org.hornetq.jms.client.HornetQXAConnectionFactory">
<beans:constructor-arg name="ha" value="false" />
<beans:constructor-arg>
<beans:bean class="org.hornetq.api.core.TransportConfiguration">
<beans:constructor-arg value="org.hornetq.core.remoting.impl.netty.NettyConnectorFactory" />
<beans:constructor-arg>
<beans:map key-type="java.lang.String" value-type="java.lang.Object">
<beans:entry key="host" value="localhost"/>
<beans:entry key="port" value="5445"/>
</beans:map>
</beans:constructor-arg>
</beans:bean>
</beans:constructor-arg>
</beans:bean>
<beans:bean id="cachingConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
<beans:constructor-arg ref="hornetConnectionFactory" />
</beans:bean>
<beans:bean id="transactionalConnectionFactory" class="org.springframework.jms.connection.TransactionAwareConnectionFactoryProxy">
<beans:property name="targetConnectionFactory" ref="cachingConnectionFactory" />
<beans:property name="synchedLocalTransactionAllowed" value="true" />
</beans:bean>
<jms:connector name="jmsConnector" specification="1.1" connectionFactory-ref="transactionalConnectionFactory"
validateConnections="true" acknowledgementMode="AUTO_ACKNOWLEDGE" disableTemporaryReplyToDestinations="true" />
<flow name="MyFlow">
<jms:inbound-endpoint connector-ref="jmsConnector" queue="MyQueue"
exchange-pattern="one-way" />
<logger message="Message #[payload.id] processed successfully" level="DEBUG"/>
</flow>
</mule>
【问题讨论】:
【参考方案1】:我想知道问题是否是由于您正在使用事务连接工厂:不确定 Mule 是否可以利用它,或者它可以,但您必须使您的 JMS 入站端点具有事务性。
您是否尝试过在jms:connector
中使用裸露的hornetConnectionFactory
?
【讨论】:
以上是关于Mule ESB HornetQ JMS 消息未传递的主要内容,如果未能解决你的问题,请参考以下文章