問題タブ [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.
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
c# - .Net NMS.ActiveMQは、メッセージ送信呼び出し間のセッションと接続を保存する必要があります
私は ActiveMQ のことを始めたばかりで、いくつか質問を受けました。
ActiveMQ を使用してメッセージを送信する必要があります
私が今やったこと:
コンストラクターのパラメーターとして注入されるこのクラスのインスタンスは 1 つだけです。
メッセージが頻繁に送信されるため (多くの場合、10 秒ごとに 1 つのメッセージ)、接続、セッション、およびプロデューサーの作成のオーバーヘッドが心配です。接続、セッション、またはプロデューサーのインスタンスを再利用する必要がありますか? そのようなシナリオで一般的なパターンは何ですか?
c# - Apache nms でメッセージを NACK する
メッセージの送受信にApache nms stompを使用しようとしています。hornetq を使用しているため、Transnational ack モードを使用できません。私の消費者シナリオ:
- メッセージを受け取る
- メッセージを処理する
- プロセスが成功した場合は ACK を返します (message.Acknowledge() を使用)
- プロセスが失敗した場合は NACK (????)
私が望むのは、プロセスが失敗した場合にメッセージを NACK することだけです。どうすればApache nmsでメッセージをNACKできますか?
activemq - NMS API を使用して ActiveMQ サブスクライバーを削除するにはどうすればよいですか?
トピック サブスクライバーを削除する必要があります。私はこれを見つけましたhttp://activemq.apache.org/manage-durable-subscribers.html
しかし、それは私たちにとって十分ではありません。メッセージの有無に関係なく、サブスクライバーを削除するタイミングを制御したいと考えています。また、私たちのプログラムは C# で書かれています。したがって、私たちにとって最適なソリューションは NMS API です。
ありがとう。
コードは次のとおりです。
アップデート
私たちのシナリオは非常に単純です。
- クライアントがキューを作成し、トピックでコンシューマーをサブスクライブしました。
- クライアント側が接続を閉じました。
- サーバー側のコンシューマーを削除します (前回の更新のサンプル コードのように)
jconsole 経由の activemq ブローカーのスナップショットは次のとおりです。 jconsole スナップショット
次の方法でサブスクライバー「7B0FD84D-6A2A-4921-967F-92B215E22751」を削除したいと考えていますが、常にこのエラー「javax.jms.InvalidDestinationException : 永続的なサブスクリプションが存在しません: 7B0FD84D-6A2A-4921-967F-92B215E22751」が発生しました。
apache - サンドボックスから Apache NMS を呼び出すには?
セキュリティ上の理由から、.NET 4.0 環境のサンドボックスで実行する必要があるコード ('IntPub') から Apache ActiveMQ NMS バージョン 1.6.0 を呼び出そうとしています。サンドボックスを作成するプログラムは、私のコードを「部分的に信頼」するため、「セキュリティ透過的」になります。これは、NMS が「セキュリティ クリティカル」であるように思われるため、ConnectionFactory を作成できないことを意味しているようです (以下のエラー ログを参照)。このエラーの原因となっているコードは次のとおりです。
代わりにこれも試しましたが、同様の結果が得られました。
アセンブリのセキュリティ レベルを変更することはできません (サンドボックスがそれを防ぎます)。NMS を「セーフ クリティカル」として実行して、「セキュリティ透過」コードで呼び出すことができるようにする方法はありますか? そうするために再コンパイルする必要がありますか、それとも NMS は「セーフクリティカル」とは決して見なされない何らかの操作を行いますか?
助けや提案をいただければ幸いです...
c# - .NET から ActiveMQ に接続できません: IConnectionFactory 実装がありません
.NET クライアントから ActiveMQ に接続しようとしています。ActiveMQ サーバーが稼働中です。ブラウザから管理コンソールにアクセスできます。
次のコードを実行すると、NMSCOnnctionFactory を作成しようとすると例外が発生します。なぜこれが起こっているのか、それを修正する方法はわかりません。さまざまなポートを試しましたが、それが問題のようです。何か案は?
.net - メッセージを long(datatype) の形式で activemq ペイロードに送信する方法は?
.NET 3.5 を使用してメッセージをアクティブな mq に送信しています。これらのメッセージをキューから処理する Java リスナーがあります。
ヘッダーが含まれています
リスナーは、ペイロードのデータ型が long であることを期待しています。したがって、ペイロードで長いデータ型を送信する必要があります。
これは、アクティブな mq にメッセージを投稿するために使用しているコードです。
現在、コードに従って、文字列をペイロードとして送信しています。
ペイロードを長いデータ型として送信するようにこのコードを変更するにはどうすればよいですか? ペイロードをオブジェクトとして送信しようとしました。しかし、リスナーがこのメッセージを選択するとエラーが発生します。エラー: 無効なストリーム ヘッダーが破損しています。
コメントによると、私は IStreamMessage を使用しました
次に、Tomcat ログを調べたところ、これが表示されました。これにはヘッダーがありません。私はペイロードしか持っていません
これが機能しなかったので、ITextMessage を使用してみました。
ここに私がログで見ることができたものがあります。
私はスプリント統合を使用しており、リスナーは入力パラメーターとしてリストを期待しています
long データ型のペイロードを送信するにはどうすればよいですか?