0

したがって、コンカレントコンシューマをトピック、つまり複数のリスナに作成しています。私はそれらを耐久性があるように構成しています。私が知りたいのは何恒久サブスクライバはJMSとどのように連携しますか?

@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; 
    } 

され、
は、イベントが来て、それがすべての5人の加入者に公開されているとします。それらのうちの1人が処理するので、処理が完了するまですぐには認識しませんが、残りの4つはアイドル状態であるためすぐに認識します。

は、2番目のイベントが来たと仮定しましょう、今

  1. は、それが承認を与えた後にのみ、4人の加入者に送信され、第五加入者のためのキューにメッセージを保持し、第五加入者に送信しますか?

        OR 
    
  2. 第五加入者も認識し、その後、一度にすべての加入者に送り出すまでは、キュー内のメッセージの加入者が、待機のいずれかに送信doesntの?

私はsetsessiontransacted trueを使用しています。 1または2はどうなりますか? また、ブローカは、各永続サブスクライバの内部キューを維持して、その恒久サブスクライバへのメッセージの流れを理解していることを前提としています。

並列コンシューマ、永続サブスクリプションおよびsetsessiontransacted = trueの設定でフローがどのように機能するか説明できますか?

答えて

0

メッセージングプロバイダは、イベントメッセージを公開時にサブスクライバのサブスクリプションキューに入れます。これらのメッセージをサブスクリプションキューからプルする(またはリスナーを使用して受信する)のはサブスクライバです。したがって、サブスクライバがイベントメッセージを処理している場合、他のサブスクライバはまったく影響を受けず、パブリケーションを引き続き受信します。事実、加入者は他の加入者の存在を知らない。

+0

耐久性のあるサブスクライバがなくても、通常のサブスクライバを使用しても、この機能は同じです。 – africandrogba

+0

はい、サブスクリプションが耐久性があるかどうかは関係ありません。 – Shashi

関連する問題