問題タブ [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 に答える
2398 参照

c# - ストリームがピアによって閉じられているのはなぜですか?

ActiveMQ Stompサーバーで宛先(キューまたはトピック、関係ありません)をリッスンし、受信したメッセージをコンソールに記録する次のコンソールプログラムがあります。

私がそれを始めるとき、私がメッセージを送り続ける限り、それはうまく働きます。しかし、30秒間非アクティブになると、例外が発生します。これは、キューにメッセージを送信しなくても発生します。

グーグルで調べて、Apache.NMSソースコードを読んだところ、「InactivityMonitor」で何かをしなければならないことがわかりtransport.useInactivityMonitor=falseました。接続文字列でパラメータを指定しても、例外は発生しません。正常に動作します。

しかし、私がすべてを理解していると思う限り、そのinactivityMonitorには、「デッド」接続が検出され、適切にクリーンアップされていることを確認するという目的があります。

だから何か他の問題があるに違いない!上記のコードに単純なコンソールトレーサーを追加しました。これは、transport.useInactivityMonitor=falseパラメーターなしで接続した場合の出力です。

ですから、私のクライアントは、あまりにも長い間非アクティブであったために、ブローカーによって「キック」されていると思います。しかし、上記のログから、クライアントが実際に「キープアライブ」メッセージを送信している理由がよくわかりません。したがって、非アクティブであってはなりません。

この問題をどのように進めるかについては、選択肢がありません。誰かがこれについて何らかの洞察を持っているなら、それは大抵感謝されるでしょう!

更新
バージョン番号:

  • ライブラリ:Apache.NMS.Stomp v1.5.3
  • ブローカー:Apache ActiveMQ 5.6.0
0 投票する
2 に答える
1957 参照

c# - .Net NMS.ActiveMQは、メッセージ送信呼び出し間のセッションと接続を保存する必要があります

私は ActiveMQ のことを始めたばかりで、いくつか質問を受けました。

ActiveMQ を使用してメッセージを送信する必要があります

私が今やったこと:

コンストラクターのパラメーターとして注入されるこのクラスのインスタンスは 1 つだけです。

メッセージが頻繁に送信されるため (多くの場合、10 秒ごとに 1 つのメッセージ)、接続、セッション、およびプロデューサーの作成のオーバーヘッドが心配です。接続、セッション、またはプロデューサーのインスタンスを再利用する必要がありますか? そのようなシナリオで一般的なパターンは何ですか?

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

c# - Apache nms でメッセージを NACK する

メッセージの送受信にApache nms stompを使用しようとしています。hornetq を使用しているため、Transnational ack モードを使用できません。私の消費者シナリオ:

  1. メッセージを受け取る
  2. メッセージを処理する
  3. プロセスが成功した場合は ACK を返します (message.Acknowledge() を使用)
  4. プロセスが失敗した場合は NACK (????)

私が望むのは、プロセスが失敗した場合にメッセージを NACK することだけです。どうすればApache nmsでメッセージをNACKできますか?

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

activemq - NMS API を使用して ActiveMQ サブスクライバーを削除するにはどうすればよいですか?

トピック サブスクライバーを削除する必要があります。私はこれを見つけましたhttp://activemq.apache.org/manage-durable-subscribers.html
しかし、それは私たちにとって十分ではありません。メッセージの有無に関係なく、サブスクライバーを削除するタイミングを制御したいと考えています。また、私たちのプログラムは C# で書かれています。したがって、私たちにとって最適なソリューションは NMS API です。

ありがとう。


コードは次のとおりです。


アップデート

私たちのシナリオは非常に単純です。

  1. クライアントがキューを作成し、トピックでコンシューマーをサブスクライブしました。
  2. クライアント側が接続を閉じました。
  3. サーバー側のコンシューマーを削除します (前回の更新のサンプル コードのように)

jconsole 経由の activemq ブローカーのスナップショットは次のとおりです。 jconsole スナップショット

次の方法でサブスクライバー「7B0FD84D-6A2A-4921-967F-92B215E22751」を削除したいと考えていますが、常にこのエラー「javax.jms.InvalidDestinationException : 永続的なサブスクリプションが存在しません: 7B0FD84D-6A2A-4921-967F-92B215E22751」が発生しました。

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

apache - サンドボックスから Apache NMS を呼び出すには?

セキュリティ上の理由から、.NET 4.0 環境のサンドボックスで実行する必要があるコード ('IntPub') から Apache ActiveMQ NMS バージョン 1.6.0 を呼び出そうとしています。サンドボックスを作成するプログラムは、私のコードを「部分的に信頼」するため、「セキュリティ透過的」になります。これは、NMS が「セキュリティ クリティカル」であるように思われるため、ConnectionFactory を作成できないことを意味しているようです (以下のエラー ログを参照)。このエラーの原因となっているコードは次のとおりです。

代わりにこれも試しましたが、同様の結果が得られました。

アセンブリのセキュリティ レベルを変更することはできません (サンドボックスがそれを防ぎます)。NMS を「セーフ クリティカル」として実行して、「セキュリティ透過」コードで呼び出すことができるようにする方法はありますか? そうするために再コンパイルする必要がありますか、それとも NMS は「セーフクリティカル」とは決して見なされない何らかの操作を行いますか?

助けや提案をいただければ幸いです...


0 投票する
3 に答える
2932 参照

c# - .NET から ActiveMQ に接続できません: IConnectionFactory 実装がありません

.NET クライアントから ActiveMQ に接続しようとしています。ActiveMQ サーバーが稼働中です。ブラウザから管理コンソールにアクセスできます。

次のコードを実行すると、NMSCOnnctionFactory を作成しようとすると例外が発生します。なぜこれが起こっているのか、それを修正する方法はわかりません。さまざまなポートを試しましたが、それが問題のようです。何か案は?

0 投票する
2 に答える
1920 参照

.net - メッセージを long(datatype) の形式で activemq ペイロードに送信する方法は?


.NET 3.5 を使用してメッセージをアクティブな mq に送信しています。これらのメッセージをキューから処理する Java リスナーがあります。

ヘッダーが含まれています

リスナーは、ペイロードのデータ型が long であることを期待しています。したがって、ペイロードで長いデータ型を送信する必要があります。

これは、アクティブな mq にメッセージを投稿するために使用しているコードです。

現在、コードに従って、文字列をペイロードとして送信しています。

ペイロードを長いデータ型として送信するようにこのコードを変更するにはどうすればよいですか? ペイロードをオブジェクトとして送信しようとしました。しかし、リスナーがこのメッセージを選択するとエラーが発生します。エラー: 無効なストリーム ヘッダーが破損しています。

コメントによると、私は IStreamMessage を使用しました

次に、Tomcat ログを調べたところ、これが表示されました。これにはヘッダーがありません。私はペイロードしか持っていません

これが機能しなかったので、ITextMessage を使用してみました。

ここに私がログで見ることができたものがあります。

私はスプリント統合を使用しており、リスナーは入力パラメーターとしてリストを期待しています

long データ型のペイロードを送信するにはどうすればよいですか?