問題タブ [smallrye-reactive-messaging]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
229 参照

quarkus - Quarkus: Artemis でポイントツーポイントメッセージングを使用する方法は?

私は quarkus バージョンを使用しています:1.5.2.Finalおよびリアクティブ メッセージングを含めるために次の依存関係を使用しています (送信側プロジェクトと受信側プロジェクトの間に Artemis の実行中の docker インスタンスがあります):

送信者プロジェクトには、@Outgoing('stock-quote')毎秒乱数を生成して返すメソッドに関する注釈がありますFlowable<Message<String>>。構成は次のとおりです。

受信者プロジェクトでは、注釈付きのメソッドを持つ受信者が配置されてい@Incoming('stock)'.ます。構成は次のとおりです。

私は何に気づきますか?すべてが正常に機能します。なんらかの理由で受信者プロジェクトが停止した場合でも、送信者によってまだ送信されているメッセージは保持されます。これは良いことです。ただし、レシーバーが再びオンラインに戻ると、レシーバーは永続化されたメッセージを受信せず、代わりに別の「クライアント スレッド」で開始します。永続化されたメッセージはそこにとどまります。

@Broadcast送信者側にも注釈を追加しようとしました。また、レシーバーの複数のインスタンスが必要なため、メッセージはレシーバーに分割されています。その後、レシーバーがオフラインになると、メッセージは再び永続化されます。レシーバーが復帰すると、新しいメッセージが送信されますが、持続メッセージはそこにとどまります (別の「クライアント スレッド」に留まり、さらに悪いことに、この「クライアント スレッド」の持続メッセージは (ブロードキャストのために) 蓄積されます)。

それで、私は何が欲しいですか?メッセージを送信する送信者が必要です。これらのメッセージは、2 つ以上の受信側インスタンスに分割されています。1 つのレシーバーがダウンした場合、メッセージは他のインスタンスによって処理されます。すべてのレシーバーがダウンしている場合、メッセージは永続化され、1 つ以上のレシーバーが再びオンラインになると、これらの永続化されたメッセージが処理されます。だから基本的に私はこれが欲しい:

ここに画像の説明を入力

アルテミスと組み合わせて quarkus リアクティブ メッセージを使用してこれを行う方法について、誰にもアイデアがありますか?