我在调试语句之下,我的消息监听器没有消耗任何消息 .
22:25:17.870 [org.springframework.jms.listener.DefaultMessageListenerContainer#0-1] DEBUG oaactivemq.ActiveMQMessageConsumer - ID:CONSUM-1401814509338-1:1:1:1收到过期消息:MessageDispatch {commandId = 0, responseRequired = false,consumerId = ID:CONSUM-1401814509338-1:1:1:1,destination = topic://Topic.ALL,message = ActiveMQTextMessage {commandId = 23284887,responseRequired = false,messageId = ID:PROC-1398663597609- 0:1:1:1:23284883,originalDestination = null,originalTransactionId = null,producerId = ID:PROC-1398663597609-0:1:1:1,destination = topic://Topic.ALL,transactionId = null,expiration = 1401814515925,timestamp = 1401814514925,arrival = 0,brokerInTime = 1401814514934,brokerOutTime = 1401814514934,correlationId = null,replyTo = null,persistent = false,type = null,priority = 4,groupID = null,groupSequence = 0,targetConsumerId = null, compressed = false,userID = null,content = org.apache.activemq.util.ByteSequence@2fec90f6,marshalledPropertie s = org.apache.activemq.util.ByteSequence@62a08837,dataStructure = null,redeliveryCounter = 0,size = 0,properties = {_ componentid = _EPSYNC_READWRITE,_attributename = networkAddress,_operation = Update,_oid = 51e8e5c3e4b0cc716bff43cc,type = NodeServer,eventtype = attribute,repository = qdb, userid = null},readOnlyProperties = true,readOnlyBody = true,droppable = false,jmsXGroupFirstForConsumer = false,text = {“ eventtype”:“attribute”,“ operation”:... kAddress“}] },redeliveryCounter = 0}
请在下面找到我的spring配置:
<bean id="qConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
<property name="targetConnectionFactory">
<bean class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL">
<value>tcp://localhost:61616?wireFormat.maxInactivityDuration=0</value>
</property>
</bean>
</property>
</bean>
<bean id="qMessageListener" class="com.xyz.listener.QManifestListener" />
<jms:listener-container destination-type="topic"
container-type="default" connection-factory="qConnectionFactory"
acknowledge="auto" cache="auto">
<jms:listener destination="Topic.ALL" ref="qMessageListener"
method="onMessage" />
</jms:listener-container>
请帮我弄清楚我错过了什么..
1 回答
如果您的 生产环境 者发送的消息具有非常短的到期值,那么他们可能会在到达消费者之前到期 . 但是在很多情况下会出现这种错误,因为发送方和接收方上的时钟没有同步,所以当它真的不应该有消息时,消息似乎已经过期了 . 解决方案可能是确保您的计算机全部使用NTP进行同步 .
还有另一种选择,应该同步时钟是不可能的,这是使用ActiveMQ TimeStampPlugin在发送它们之前更新传入消息的时间戳 .