2017-09-12 8 views
0

私は始めて、ActiveMQにいくつかの問題が発生しました。私は、単純なパブリッシャーアプリActiveMQ消費者はなぜそれを殺した後10秒間接続されたと見なされますか?

@Component 
public class VirtualTopicSender { 

    @Autowired 
    private JmsTemplate jmsTemplate; 

    public void send() { 
     Topic topic = new ActiveMQTopic("VirtualTopic.TEST-VIRTUAL-TOPIC"); 
     int i = 0; 

     while(true) { 
      try { 
       Thread.sleep(1000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
      jmsTemplate.convertAndSend(topic, i++); 
     } 
    } 

} 

とも簡単な受信機

@Component 
public class VirtualTopicReceiver { 

    @JmsListener(destination="Consumer.myConsumer0.VirtualTopic.TEST-VIRTUAL-TOPIC", containerFactory = "defaultMessageListenerContainerFactory") 
    public void receiveMessages(Session session, String message) { 
     System.out.println(message); 
     try { 
      session.commit(); 
     } catch (JMSException e) { 
      e.printStackTrace(); 
     } 
     try { 
      System.out.println(session.getTransacted()); 
     } catch (JMSException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

両方がspringboot年代ですが書いた、すべてのカスタマイズせずにローカルのActiveMQを使用しています。

私は何をやっていることは次のとおりです。

  • は、受信機からいくつかの出力を見て、端末
  • 端末
  • 開始パブリッシャーアプリで受信アプリを起動して、再度受信を開始するCtrl + C
  • でそれを殺します

現在、10秒間の出力が欠落しています.netstatも10秒間表示されています。オンになっている

$ netstat -an | grep 575* | grep 61616 
    TCP 127.0.0.1:57809  127.0.0.1:61616  ESTABLISHED 
    TCP 127.0.0.1:61616  127.0.0.1:57788  TIME_WAIT 
    TCP 127.0.0.1:61616  127.0.0.1:57789  TIME_WAIT 
    TCP 127.0.0.1:61616  127.0.0.1:57790  TIME_WAIT 
    TCP 127.0.0.1:61616  127.0.0.1:57791  TIME_WAIT 
    TCP 127.0.0.1:61616  127.0.0.1:57792  TIME_WAIT 
    TCP 127.0.0.1:61616  127.0.0.1:57793  TIME_WAIT 
    TCP 127.0.0.1:61616  127.0.0.1:57794  TIME_WAIT 
    TCP 127.0.0.1:61616  127.0.0.1:57795  TIME_WAIT 
    TCP 127.0.0.1:61616  127.0.0.1:57796  TIME_WAIT 
    TCP 127.0.0.1:61616  127.0.0.1:57797  TIME_WAIT 
    TCP 127.0.0.1:61616  127.0.0.1:57798  TIME_WAIT 
    TCP 127.0.0.1:61616  127.0.0.1:57799  TIME_WAIT 
    TCP 127.0.0.1:61616  127.0.0.1:57800  TIME_WAIT 
    TCP 127.0.0.1:61616  127.0.0.1:57801  TIME_WAIT 
    TCP 127.0.0.1:61616  127.0.0.1:57802  TIME_WAIT 
    TCP 127.0.0.1:61616  127.0.0.1:57803  TIME_WAIT 
    TCP 127.0.0.1:61616  127.0.0.1:57804  TIME_WAIT 
    TCP 127.0.0.1:61616  127.0.0.1:57805  TIME_WAIT 
    TCP 127.0.0.1:61616  127.0.0.1:57806  TIME_WAIT 
    TCP 127.0.0.1:61616  127.0.0.1:57808  TIME_WAIT 
    TCP 127.0.0.1:61616  127.0.0.1:57809  ESTABLISHED 

あなたはその10秒の遅延を取り除く方法を知っていますか?受信者の複数のインスタンスでアプリケーションを作成する場合、ActiveMQがインスタンスを切り替える前に10秒間メッセージを失うことはありませんが、今のところそれを修正する方法はありません。

ご協力いただければ幸いです。

答えて

0

さて、すべてが明らかになりました。昨日、私は一日一杯の文書を読んでこの行動を理解しようとしていましたが、今日は、消費者がCtrl + Cを押しても本当に死んでいることを確認することにしました。

レシーバーが呼んでいた別のアプリケーションでシンプルなレストエンドポイントを作成しましたが、Ctrl + Cレシーバーが10秒間レストコールをした後もシンプルなレストエンドポイントが作成されました。

提示された問題はgit bashにあります。

関連する問題