我有非常简单的 MULE 从 HornetQ 队列读取并将对象保存到数据库的设置:
设置如下:
<jms:connector name="connector.jms" maxRedelivery="1" connectionFactory-ref="hornetQConnectionFactory" doc:name="JMS"
createMultipleTransactedReceivers="true"
numberOfConcurrentTransactedReceivers="100"
acknowledgementMode="AUTO_ACKNOWLEDGE">
<reconnect count="50" frequency="5000"/>
</jms:connector>
<flow name="jmsListenerFlow1" doc:name="jmsListenerFlow1">
<jms:inbound-endpoint queue="adsLogQueue" connector-ref="connector.jms" doc:name="JMS">
<jms:transaction action="ALWAYS_BEGIN"/>
</jms:inbound-endpoint>
<component >
<spring-object bean="logSaver"/>
</component>
</flow>
为什么当 maxRedelivery 设置为 1 时,我会收到一条消息,指出消息已在端点上重新传递 9 次?它到底是什么意思?
hornetQConnectionFactory:
<bean name="hornetQTransportConfiguration" class="org.hornetq.api.core.TransportConfiguration">
<constructor-arg value="org.hornetq.core.remoting.impl.netty.NettyConnectorFactory"/>
<constructor-arg>
<map>
<entry key="host" value="${jms.host}" />
<entry key="port" value="${jms.port}" />
</map>
</constructor-arg>
</bean>
<bean name="hornetQConnectionFactory" class="org.hornetq.jms.client.HornetQJMSConnectionFactory">
<constructor-arg index="0" value="false"/>
<constructor-arg index="1" ref="hornetQTransportConfiguration"/>
<property name="minLargeMessageSize" value="250000"/>
<property name="cacheLargeMessagesClient" value="false"/>
</bean>
任何帮助将不胜感激!
下面的堆栈跟踪。
错误 2012-10-19 01:04:07,283 [Thread-3013 (HornetQ-client-global-threads-1442093417)]: 消息:“ID 为“ID:e6a0b303-1977-11e2-96d4-810571a3fe10”的消息已在端点“jms://adsLogQueue”上重新传递 9 次,超过了连接器“connector.jms”上的 maxRedelivery 设置 1。消息负载的类型:HornetQObjectMessage 代码:MULE_ERROR--2 异常堆栈是: 1.“ID为“ID:e6a0b303-1977-11e2-96d4-810571a3fe10”的消息已在端点“jms://adsLogQueue”上重新传递9次,超过了连接器“connector.jms”上的maxRedelivery设置1。消息负载的类型:HornetQObjectMessage (org.mule.transport.jms.redelivery.MessageRedeliveredException) org.mule.transport.jms.redelivery.JmsXRedeliveryHandler:91 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/transport/jms/redelivery/MessageRedeliveredException.html) 根异常堆栈跟踪: org.mule.transport.jms.redelivery.MessageRedeliveredException:“ID 为“ID:e6a0b303-1977-11e2-96d4-810571a3fe10”的消息已在端点“jms://adsLogQueue”上重新传递 9 次,超出了 maxRedelivery 设置1 在连接器“connector.jms”上。消息有效负载的类型为:HornetQObjectMessage 在 org.mule.transport.jms.redelivery.JmsXRedeliveryHandler.handleRedelivery(JmsXRedeliveryHandler.java:91) 在 org.mule.transport.jms.MultiConsumerJmsMessageReceiver$JmsWorker.preProcessMessage(MultiConsumerJmsMessageReceiver.java:418) 在 org.mule.transport.AbstractReceiverWorker$1$1.process(AbstractReceiverWorker.java:120) + 3 个以上(设置调试级别日志记录或“-Dmule.verbose.exceptions=true”为所有内容) ****************************************************** ******************************