2016-11-01 19 views
1

私はかなりこれが何を意味するか理解していない:JMSトピック時間依存

各メッセージには、複数の加入者を有することができます。サイト運営者と購読者の間に存在する時間は、 です。 トピックの購読者は、購読が作成された後に公開されたメッセージ のみを消費することがあります。

「時間依存性」が存在するとはどういう意味ですか?上記のことは、「サブスクライバはサブスクリプションが作成された後にのみメッセージを消費する可能性がある」と言いますが、サブスクライバがまだ作成されていないメッセージを消費することはできないと理解しているため、 )。

Googleで説明が見つかりませんでしたので、ご協力いただきありがとうございます。

編集:私は春のブートやその他の技術を説明する素晴らしいチャンネルをYouTubeで見つけました。特に、このvideoは、キューとトピックの違い(恒久サブスクライバとも言える)を理解するのに役立ちました。

答えて

1

"時間依存性"が存在するとはどういう意味ですか?メッセージ・ブローカーは、コンシューマがない場合でも、プロデューサーによって公開されたすべてのメッセージ(TimeToLive満了まで)を保持しているにJMSキューと比較し、このことをよく理解するために

を作成しました。今

、NOの加入者が存在しない場合はJMSトピックに来て、メッセージブローカがプロデューサーによって公開されたメッセージを保存しないでを作成しました。トピックサブスクリプションの作成中に

、あなたはtopicSession.createDurableSubscriberを使用して(私は非耐久性とトピックのサブスクリプションを作成することによって、これから発表され、このトピックのメッセージを失いたくないというメッセージブローカを伝えることができます() 方法)。また、非永続サブスクリプションの場合でも、ブローカーは、TimeToLiveの有効期限(サブスクリプション作成時間)の後に公開されたメッセージを保持します。

+0

私はビジネス・コンテキストにおいて、メイン・アプリケーションからの変更をリッスンし、dbを追加/変更するために必要なspringboot APIを持っています。この場合、「固定加入者」モデルを使用しますか? メインアプリケーションとまったく同じ変更を聞くspringbootアプリがもう少しあります。その結果、別々のキューが作成され、メインアプリケーションがこれらの別々のキューに同じメッセージを送信します。 トピックの代わりにキューを使用する理由はわかりません。私は、あなたがビジネスのコンテキストなしであなたの意見を述べることは難しいかもしれないが、あなたの考えは何ですか? – johnwick0831

+1

メッセージの内容はまったく同じですか?答えが「はい」の場合は、処理能力が高く、トピックに1回しか生成されないため、複数のキューに生成する意味はありません。 – developer

+0

はい、メッセージはまったく同じです。私は別の開発者にチェックしたところ、トピックに変更していない理由は、ビジネスの制約(お金と時間)によるものだと思われます。お返事をありがとうございます。 – johnwick0831

0

購読者が購読する前にトピックにメッセージを公開すると、メッセージは表示されません。

同様に、これは永続的なサブスクライバに関連しています。通常のサブスクライバは、メッセージがブローカに接続されている間だけメッセージを表示します。サブスクライバが切断された前後のメッセージは、サブスクライバには表示されません。

ただし、永続サブスクリプションを使用すると、サブスクライバは切断できますが、ブローカはそのサブスクライバ宛てのメッセージを引き続き保持します。サブスクライバが再接続すると、格納されているすべてのメッセージと新しいメッセージがすべて取得されます。

+0

消費者が意図的に購読しないでメッセージが失われるという現実的な例はありますか? – johnwick0831

+0

サブスクライバのないトピックに送信されたときにメッセージが失われる理由を説明するだけです。基本的には、加入者とプロデューサの競合状態です。プロデューサが勝つと、メッセージが失われる可能性があります。あるいは何らかの理由ですべての加入者がブローカーへの接続を終了した場合。 –

関連する問題