2017-09-29 14 views
0

したがって、コンシューマをトピック、つまり複数のリスナに作成しています。私はそれらを耐久性があるように構成しています。私は耐久消費のユースケースのシナリオを考えています耐久性のあるリスナ/コンシューマのユースケースシナリオ

@Bean 
public DefaultMessageListenerContainer listenerContainers() { 
    DefaultMessageListenerContainer container = new DefaultMessageListenerContainer(); 
    container.setConnectionFactory(connectionFactory()); 
    container.setDestinationName(COMMENT_QUEUE); 
    container.setPubSubDomain(true); 
    container.setSessionTransacted(true); 
    container.setConcurrentConsumers(2); 
    container.setSubscriptionDurable(true); 
    container.setMessageListener(datafileSubscriber); 
    container.start(); 
    return container; 
} 

は、私がメッセージをパブリッシュし、メッセージがリスナーによって撮像されたされたプロセスを持って

です。私は誰かがプロセスを停止し、私は再びそれを再開したと思っていた、私はメッセージとその処理を失うことはありませんfの耐久消費者のため。

そうですか?

メッセージがKahaDBにあり、プロセスが再起動された後もメッセージは失われません。メッセージは永続的であるため、完全に処理されたメッセージは再送信されます。 この説明は正しいですか?

答えて

1

これは間違いありません。トピックサブスクリプションはデフォルトでは永続的ではありません。積極的に消費する加入者だけがメッセージを受け取る。新しい消費者は購読中に新しいメッセージのみを公開します。

耐久性の高い消費者は、キューのように機能します。ブローカーはそのような消費者がそれらを受け取るまで、それらを追跡し、メッセージを保持します。

サブスクリプションは、確立されたときにのみ永続的になります。ブローカがそれを知らない場合、メッセージは保持されません。したがって、メッセージを公開する前に、永続的な購読を確立することが重要です。

+0

プロセスがダウンして再起動した後、プロセスは再びアクティブになり、それらのプロセスに向けたメッセージが表示されます。 – africandrogba

+0

修正;メッセージがダウンしている間に送信されても​​(一旦耐久性のあるサブシステムが確立されると) –

+0

https://stackoverflow.com/help/someone-answers –

関連する問題