2

私のプロジェクトでは、スプリング クォーツ プロセスが 15 分ごとに、つまり 1 日 96 回実行されます。これにより、データベースから特定のレコードが取得され、REST サービス (JBoss 7 で実行) に POST されます。これらのレコードの数は、通常 50 ~ 100 です。

REST サービスには、このメッセージをトピックに公開する jms イベント パブリッシャーがあります。このトピックには 2 人の消費者がいます。

  1. メッセージを処理し、モバイルでプッシュ通知メッセージを送信する
  2. 第三者と話す (通常、通話が完了するまでに 4 ~ 5 秒かかります)

これはトピックであるため、両方のコンシューマがすべてのメッセージを受信しますが、何らかのプロパティに基づいてそれらをフィルタリングします。

私の問題は; これは、1 週間前から最近観察されています。コンシューマ #1 が無効なトークンとして APNS から応答を複数回受け取ります。トークンは、プッシュ通知をモバイルに送信するために使用されます。しばらくすると、このコンシューマーは停止し、2 番目のコンシューマーが実行を続けている間はまったく応答しません。

以下は構成です。

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

投稿された別の質問を検索しましたが、関連するものは見つかりませんでした。 あなたの考えは本当に役に立ちます。

4

1 に答える 1

1

shailu - 同様の問題を経験しました。MQ のバージョンをアップグレードしました。MQ がランダムな動作を示すため、これで問題が完全に解決されたわけではありません。

于 2016-06-20T09:36:57.403 に答える