Невозможно потреблять сообщение от ActiveMQ из-за «полученного просроченного сообщения»

StackOverflow https://stackoverflow.com//questions/24021143

Вопрос

Я получаю ниже отладочного утверждения, и мой слушатель сообщения не потребляет никаких сообщений.

22: 25: 17.870 [org.springframework.jms.listener.defaultmessagelistenercontainer # 0-1] Debug o.a.activemq.activemqmessageConsumer - ID: Потребляемое 1401814509338-1: 1: 1: 1 Получено истекшее сообщение: Messagedispatch {commandiD= 0, Отведомленный= false, povereRID= ID: Потребляемая 1401814509338-1: 1: 1: 1, назначение= Тема: //topic.all, Сообщение= activeMQTextMessage {commandiD= 23284887, Отведомленный = false, messageId= ID: PROC-1398663597609-0: 1: 1: 1: 23284883, Оригиналdestination= NULL, IrumentTransActionID= NULL, PROICEERID= ID: PROC-1398663597609-0: 1: 1: 1, назначение= Тема: //topic.all, TransactionID= NULL, EXPIRY= 1401814515925, Timestamp= 1401814514925, прибытие= 0, брокеринта= 1401814514934, BrokeroutTime= 1401814514934, CorrelationID= NULL, REVELETO= NULL, Персистент= false, type= null, priority= 4, groupid= null, Groupsequence= 0, TargetConsumerID= NULL, Compressed= false, usid = null, content= org.apache.activemq.util.bytesequence@2fec90f6, marshalledproperties= org.apache.activemq.util.bytesequence@62a08837, Datastructure= NULL, REDELIVERYCOUSER= 0, SIZE= 0, свойства= {_componentId= _EPSYNC_READWRITE, _ATTRIBUTENAME= NEWACTADDRESS, _Operation= Update, _oid= 51E8E5C3E4B0CC716BFF43CC, _TYPE= NODESERVER, _EVENTTYPE= атрибут, _repository= qdb, _userid= null}, readonlyproperties= true, readonlybody= true, droppable= false, jmsxgroupfirstforconsumer= false, text= {"_eventtype": "Атрибут" , "_Operation": ... kaddress "}]}}, RedeliveryCounter= 0}


Пожалуйста, найдите мой пружинный конфиг ниже:

<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>
.

Пожалуйста, помогите мне выяснить, что мне не хватает ..

Это было полезно?

Решение

Если ваш производитель отправляет сообщения с очень короткой ценностью истечения срока действия, они могут сродиться, прежде чем добраться до потребителя.Однако во многих случаях такая ошибка возникает, потому что часы на отправителе и приемнике не синхронизируются, и поэтому сообщение, кажется, истек, когда он действительно не должен иметь.Решение может быть, чтобы ваши машины были синхронизированы, используя NTP.

Есть еще одна альтернатива должна синхронизировать часы, которые должны быть возможными, что нужно использовать activemq timestampplugin Чтобы обновить метку времени на входящие сообщения, прежде чем отправлять их.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top