В моем проекте процесс весеннего кварца выполняется каждые 15 минут, то есть 96 раз в день. Это извлекает определенные записи из базы данных и отправляет их в службу REST (работающую на JBoss 7). Эти записи обычно насчитывают от 50 до 100.
В службе REST есть издатель событий jms, который публикует это сообщение по теме. По этой теме есть два потребителя.
- Это сообщение процесса и отправка push-уведомлений на мобильный
- Поговорите с третьим лицом (обычно для завершения разговора требуется от 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>
Я ищу другие опубликованные вопросы, но не могу найти ничего связанного. Ваши мысли были бы очень полезны.