問題タブ [apache-nms]

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 投票する
1 に答える
3654 参照

c# - C# Apache.NMS MessageListener OnMessage が起動しない

ActiveMQ サーバーに接続するための次のコードがあります。接続は機能し、コンシューマーは AMQ Web インターフェイスに表示され、キューにメッセージがありますが、OnMessage は実行されません。

開始コールを移動しようとしましたが、それは役に立ちません。TestConnection はクライアント ID & started を示します: true

キュー内のメッセージの数はゆっくりと減少し、Web インターフェイスによると、これを行っているのは私の消費者です。

デキューを示す Web インターフェイス

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

c# - Apache NMS は、使用頻度の高いホスト マシンのソフトウェアによって、確立された接続が中止されたとスローします。

背景:
ActiveMQ/JSON を介して Linux で実行されている Java サーバーと通信する C# WPF アプリケーション
接続の合計 5 インスタンス:
キュー: 2
トピック: 3 (1 プロデューサー、2 コンシューマー)

問題:
頻繁に使用すると (500 ミリ秒未満で約 200 件のメッセージを送受信するスループット レートと、約 1 ~ 1.2 GB のメモリ ワーキング セット)、「確立された接続がホスト マシンのソフトウェアによって中止されました」がスローされます。

サンプルスタック:

これまでに試した

  • 非アクティブ モニタリングをオフにして、5 つの接続間のトラフィックを減らしました。ほとんどの場合、アプリケーションには独自のハートビート実装があるためです。
  • ConnectionFactory.OptimizeAcknowledge を true に設定して、確認をバッチ処理します
0 投票する
1 に答える
367 参照

c# - Apache NMS ActiveMQ メッセージから基になるストリーム ハンドルを取得する方法

背景:
ActiveMQ(Apache.NMS) / JSON(Newtonsoft.Json) を介して Linux で実行されている Java サーバーと通信する C# WPF アプリケーション

問題:
85000 バイトを超える JSON メッセージが LOH の断片化につながる

考えられる解決策:
JSON を Apache.NMS.ITextMessage として読み取る (現在の場合) 代わりに、基になるストリーム ハンドルを取得し、JsonTextReader を使用して逆シリアル化します。

実装の問題:
これは Apache.NMS API でサポートされていないように見えますが、実際にはここでの法案に適合しない ActiveMQStreamMessage/ActiveMQBytesMessage バリアントがあります。

誰かが上記の経験を持っているかどうか知りたいですか?

0 投票する
1 に答える
569 参照

c# - ActiveMQ - Listener イベントが発生した後、キューを再サブスクライブする必要がありますか?

Apache.NMS ライブラリを使用して ActiveMQ JMS システムと統合しています。応答キュー リスナーの場合、メッセージの受信後にコンシューマーが破棄されるかどうかは明確ではありません。

ソリューションからの抜粋は次のとおりです。

消費者は耐久性がありますか?

メッセージを受信した後、再登録する必要がありますか?

これは、リスナーをアクティブに保つために while(true) ループが必要な他のキューイング/リスナー実装 (SQL Server サービス ブローカーまたは TCP/IP リスナー) と似ていますか?

0 投票する
1 に答える
941 参照

c# - Apache NMS STOMP を使用して RabbitMQ に接続する

STOMP プロトコルを使用して、Rabbit MQ (3.6.5) キューとの間でメッセージを読み書きしようとしています。クライアント ライブラリとして Apache NMS Stomp (1.5.4) を使用しています。

NMS を使用してメッセージを送信すると、次の例外が発生します:
入力文字列が正しい形式ではありませんでした。

その理由は、NMS がファイルされたメッセージ IDの特定の位置に数字が含まれていることを期待しているためです。
これは、NMS ライブラリのコードです。

Rabbit MQ Broker によって送信されたメッセージ ID フィールドの値は次のとおり です-Bo6HXXTZFSh51Qy7X4wx9A@@1"を Int64 に変換します。

これは私のクライアントコードです:

この問題の解決策はありますか?

  • ID を別の方法で処理するように NMS を構成する方法はありますか?
  • Rabbit MQ に他のメッセージ ID を生成するように指示する方法はありますか?
0 投票する
1 に答える
45 参照

java - フェールオーバー トランスポート プロトコルは、consumercontrol メッセージを処理できません

AbortSlowConsumerStrategy の一部として、Active MQ はコンシューマーが遅いと判断した場合にコンシューマーを閉じるコマンドを送信しますが、コンシューマー/クライアント側では、フェールオーバー トランスポート プロトコルの実装がこの Consumercontrol コマンドを処理していないようで、「エラー」と言って失敗します。 : 不明なコマンド - ConsumerControl.."; エラーを受け取る代わりにコンシューマーを中止するより良い方法はありますか?

コンシューマは Apache.NMS ライブラリを使用して DotNet にあることに注意してください。