Один потребитель JMS перестает слушать активную тему mq, а второй - нет

В моем проекте процесс весеннего кварца выполняется каждые 15 минут, то есть 96 раз в день. Это извлекает определенные записи из базы данных и отправляет их в службу REST (работающую на JBoss 7). Эти записи обычно насчитывают от 50 до 100.

В службе REST есть издатель событий jms, который публикует это сообщение по теме. По этой теме есть два потребителя.

  1. Это сообщение процесса и отправка push-уведомлений на мобильный
  2. Поговорите с третьим лицом (обычно для завершения разговора требуется от 4 до 5 секунд)

Поскольку это тема, оба потребителя получают все сообщения, но отфильтровывают их на основе некоторого свойства, поэтому мало сообщений обрабатывается одним, а остальные - другим.

Моя проблема в том, которое наблюдается в последнее время с недели; этот потребитель №1 несколько раз получает ответ от APNS как недопустимый токен; токен используется для отправки push-уведомления на мобильный; через некоторое время этот потребитель останавливается и вообще не отвечает, в то время как второй продолжает работать.

Ниже представлены конфигурации:

  <amq:broker id="broker" useJmx="false" persistent="false">
    <amq:transportConnectors>
      <amq:transportConnector uri="tcp://localhost:0"/>
    </amq:transportConnectors>
  </amq:broker>

  <!-- ActiveMQ Destination -->
  <amq:topic id="topicName" physicalName="topicPhysicalName"/>

  <!-- JMS ConnectionFactory to use, configuring the embedded broker using XML -->
  <amq:connectionFactory id="jmsFactory" brokerURL="vm://localhost"/>

  <!-- JMS Producer Configuration -->
  <bean id="jmsProducerConnectionFactory"
        class="org.springframework.jms.connection.SingleConnectionFactory"
        depends-on="broker"
        p:targetConnectionFactory-ref="jmsFactory"/>

  <!-- JMS Templates-->
  <bean id="jmsTemplate"
        class="org.springframework.jms.core.JmsTemplate"
        p:connectionFactory-ref="jmsProducerConnectionFactory"/>

  <!-- Publisher-->
  <bean name="jmsEventPublisher"
        class="com.jhi.mhm.services.event.jms.publisher.JMSEventPublisher">
    <property name="jmsTemplate" ref="jmsTemplate"/>
    <property name="topic">
      <map>
        <entry key="keyname" value-ref="topicName"/>
      </map>
    </property>
  </bean>

  <!-- JMS Consumer Configuration -->
  <bean name="consumer2" class="Consumer2"/>
  <bean name="consumer1" class="Consumer1"/>

  <bean id="jmsConsumerConnectionFactory"
        class="org.springframework.jms.connection.SingleConnectionFactory"
        depends-on="broker"
        p:targetConnectionFactory-ref="jmsFactory"/>

  <jms:listener-container container-type="default"
                          connection-factory="jmsConsumerConnectionFactory"
                          acknowledge="auto"
                          destination-type="topic">

    <jms:listener destination="topicPhysicalName" ref="consumer1"/>
    <jms:listener destination="topicPhysicalName" ref="consumer2"/>

  </jms:listener-container>

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


person shaILU    schedule 21.11.2014    source источник
comment
ActiveMQ версии 5.7   -  person shaILU    schedule 21.11.2014
comment
Я никак не могу найти решение, поэтому я изменил свой подход, тем не менее, если кто-то найдет ответы, вы можете поделиться ими.   -  person shaILU    schedule 09.06.2016


Ответы (1)


shailu - я столкнулся с подобной проблемой. Что мы сделали, так это обновили версию MQ. Хотя это не решило проблему полностью, так как MQ показывает случайное поведение, и в конце мы просто объединили нашу конечную точку и пункт назначения вызова в соответствии с логикой бизнеса.

person Not Avail    schedule 20.06.2016