耐久性のあるサブスクリプションを理解するのに苦労しています。リスナーが自分自身をトピックの永続サブスクライバーとして登録すると、JMSに通知されることを理解しています。「ねえ、私は永続サブスクライバーです。今後、私がそこにいない場合は、すべてのメッセージをトピックに保存して、それらのメッセージを渡す必要があります。私が戻ってきたとき"
さて、もしそうなら、なぜ2人の加入者がこの永続的な加入を要求できないのでしょうか?
私は何かが足りないのですか?
耐久性のあるサブスクリプションを理解するのに苦労しています。リスナーが自分自身をトピックの永続サブスクライバーとして登録すると、JMSに通知されることを理解しています。「ねえ、私は永続サブスクライバーです。今後、私がそこにいない場合は、すべてのメッセージをトピックに保存して、それらのメッセージを渡す必要があります。私が戻ってきたとき"
さて、もしそうなら、なぜ2人の加入者がこの永続的な加入を要求できないのでしょうか?
私は何かが足りないのですか?
JavaEEチュートリアルからの引用
永続サブスクライバーは、JMSプロバイダーによって保持される一意のIDを指定することにより、永続サブスクリプションを登録します。同じIDを持つ後続のサブスクライバーオブジェクトは、先行するサブスクライバーによって残された状態でサブスクリプションを再開します。永続サブスクリプションにアクティブなサブスクライバーがない場合、JMSプロバイダーは、サブスクリプションによって受信されるか、期限切れになるまで、サブスクリプションのメッセージを保持します。
永続サブスクリプションを1つの永続サブスクリプションで複数のサブスクライバーに対して機能させるには、ブローカーはトピックの作成(最初のサブスクライバーによる)から有効期限まで、つまりメッセージTTLが指定されていない場合は永久に、個々のメッセージを保存する必要があります。新しいサブスクライバーはいつでもポップインして、「見逃した」すべてのメッセージ(つまり、サブスクリプションが作成されてからのすべてのメッセージ)を要求できます。それは現実的ではありません。
ここで要点を見逃しているかもしれませんが、サブスクリプションを共有する複数の同時サブスクライバーを持つことが、2つの別々のサブスクリプションを定義するよりも実際的であることがわかりませんか?
DuplicateDurableSubscriptionの理解は正しくありません。
永続的なサブスクリプションは、複数のサブスクライバーがサブスクライブできないことを意味するものではありません。これは、耐久性のために1つのサブスクライバーが2つの異なる識別子を持つことができないことを意味します。