2014-11-21 57 views
2

春季石英工艺每隔15分钟在我的项目中运行,即每天工作96次。这从数据库获取某些记录并将其发布到REST服务(在JBoss 7上运行)。这些记录通常在50到100个计数中。一位JMS消费者停止监听活跃的mq主题,而第二位则不要

关于REST服务,有jms事件发布者将该消息发布在主题上。这个主题有两个消费者。

  1. 这一进程消息,并在移动
  2. 交谈第三方发送推送通知的消息(一般需要4至5秒以完成呼叫)

由于它是主题对消费者接收的所有消息但是它们会根据某些属性将它们过滤出来,所以很少有消息由一个消费者处理并由其他消费者休息。

我的问题是;这是自一周以来最近观察到的;消费者#1多次接收来自APNS的作为无效标记的响应;令牌用于向移动设备发送推送通知;经过一段时间后,这位消费者停下来,一直没有回应,而第二位继续运行。

下面是配置:

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

我寻找另一贴的问题,但找不到任何有关。 你的想法会非常有帮助。

+0

ActiveMQ版本5.7 – shaILU 2014-11-21 09:48:45

+0

我没有办法找到解决方案,所以我改变了我的方法,仍然如果有人找到答案,欢迎您分享。 – shaILU 2016-06-09 09:32:29

回答

1

沙鲁 - 我经历了类似的问题。我们所做的是升级MQ的版本。虽然这并没有完全解决问题,因为MQ显示了随机行为,最后我们简单地将我们的端点和呼叫目标合并为按照biz逻辑

+0

对我有意义,因为我面临同样的,谢谢 – shaILU 2016-06-20 09:37:45