問題タブ [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 アドバイザリ トピック?
クライアントのログオン/ログオフを監視するアプリケーションに取り組んでいます。ActiveMQ には、新しい接続と接続の削除を警告するアドバイザリ トピックが含まれているため、このアドバイザリ メッセージ ( ActiveMQ.Advisory.Connection ) を使用することを考えました。これは開発中は問題なく機能していましたが、現在、ブローカーのネットワークで本番環境に移行する際に、ネットワーク内のリモート ブローカーからのメッセージがコンシューマーに届いていないことに気付きました。
セットアップは次のとおりです。
プロデューサー | サイト 1 のブローカー A と B (マスター スレーブ) -> これらには、パブリック ブローカー (C & D) への二重ネットワーク コネクタがあります。
サイト 2 のブローカー C と D (再びマスター スレーブ)
C と D に接続すると、ログオン/ログオフ情報を知りたい "消費者" がいます。
ブローカー A の管理コンソールでアドバイザリ トピックを見ると、サブスクライバーが表示され、コンシューマーを接続させるとログオン メッセージが表示されます。ブローカー C では、アドバイザリ トピックに関するサブスクライバーが表示されず、コンシューマがログオン/オフしたときに、アドバイザリ メッセージが表示されません。
これはデフォルトの動作ですか、それとも構成がありませんか?
c# - WCF は ServiceContract/OperationContract をシリアル化できるメッセージにどのように変換しますか?
ActiveMQ (ActiveMQ.NMS バインディングと組み合わせて) を使用して、クロスプラットフォームの RPC メッセージングをサポートする実験を始めています。
この一環として、WCF が提供する方法で RPC コントラクトを定義できるようにしたいと考えています。
そして、これを機能させるために ApackeMQ.NMS.WCF プロジェクトに貢献することを検討しています。また、カスタム バインディングを作成した経験があるので、それについては考えていません。
ただし、最初に WCF の動作に関する概念的な問題に問題があります。明らかに、あるレベルで、"GetByEmail" のクライアント チャネルのプロキシを介した呼び出しは、シリアル化できるように、メッセージ オブジェクトと応答オブジェクトに変換する必要があります。WCF の全体的な理解を深めるために、これがどのように機能するかを知りたいです。
それが正確にどのように行われるか、そして実際にかなり重いWCFインフラストラクチャ内のどのクラスが関係しているかについてのドキュメントを見つけることができません。
誰かがポインタを持っていますか?トップレベルの説明および/またはクラスへの指示は素晴らしいでしょう.
ありがとう。
.net - Apache.NMS ライブラリを使用する場合、ActiveMQ でメッセージ再配信の最大数を設定する方法はありますか?
Apache.NMS 1.4 を使用しています。メッセージが DLQ (Dead Letter Queue) に配置される前に配信できる最大回数をプログラムで設定できるようにする必要があります。それを行う方法はありますか?
c# - C#アプリでActiveMQからのメッセージの量を抑えるにはどうすればよいですか?
.NetプログラムでActiveMQを使用していますが、メッセージイベントが殺到しています。
つまり、キューイベント'onMessage(IMessage receiveMsg)'を取得すると、メッセージを内部キューに入れ、そこからXスレッドが処理を実行します。
最初は、セッションの作成時に「AcknowledgementMode.AutoAcknowledge」があったので、キュー内のすべてのメッセージが吸い込まれてメモリキューに入れられたと推測しています(クラッシュするとすべてが失われるため、危険です)。
そこで、セッションを作成するときに「AcknowledgementMode.ClientAcknowledge」を使用し、ワーカーがメッセージの準備ができたら、メッセージに対して「commit()」メソッドを呼び出します。ただし、それでもすべてのメッセージはキューから吸い込まれます。
X個のメッセージのみが処理されているか、内部キューにあり、すべてがすぐに「ダウンロード」されるわけではないように構成するにはどうすればよいですか?
c# - サーバー アプリケーションが 15 を超えるクライアントを処理する複数のクライアントの問題
C# .NET で記述され、Windows XP SP3 で実行されるサーバー アプリケーションがあります。
約 500 のクライアントを処理するために、非同期ソケット プログラミングを使用しています。
しかし、15 を超えるクライアント接続を楽しませるには問題がありました。
15 台のクライアントの後にさらに 1 台のクライアントが接続されたときに、アプリケーションがシャットダウンされました。問題が自分の OS にあるのか、それとも Windows XP の tcp 接続制限の問題なのかわかりません。
この問題を解決するのを手伝ってください。解決策を提案してください。
アップデート:
これが私のコードです。
最大クライアント値はここでは 200 であり、ワーカー ソケットも同様であるため、200 クライアントを処理する必要がありますが、接続されているすべてのクライアントが継続的に接続され、サーバーにデータを送信するため、15 を超えるクライアントからデータを受信する際に問題が発生していると思います。
c# - ActiveMQ-文字列を使用して指定された一時キューにメッセージを送信します(C#のNMS)
システム内に同期メッセージトランザクションがあり、プロセスはおおまかに次のフローに従います。
- 「ポイントA」は、メッセージブローカーに一時キュー(「宛先2」)を作成します。
- ReplyToアドレスを宛先2として設定して、ポイントAから宛先1(メッセージブローカーの通常のキュー)に送信されるメッセージ。
- ポイントAは、宛先2で応答を待機しているブロック。
- ポイントBは宛先1からメッセージを受信します。
- ポイントBは、作業オブジェクトを作成します。そのプロパティは、宛先2の名前です(.ToString() "を使用して派生します。この作業オブジェクトはシリアル化され、DBに格納されます。
..。
- 特定のパラメーターが満たされ、ocurrが変更され、応答が宛先2に送信されたときにDBから取得されたオブジェクト-SessionUtilを使用して、作業オブジェクトの文字列プロパティとして格納されたreplytoアドレスから新しいIDestinationオブジェクトを取得します。
- 「ポイントA」は宛先2からのメッセージを受信し、続行します。
このプロセスは、完了するまでに数秒から数秒かかる場合があります。
オブジェクトをシリアル化してDBに格納する必要があるため、完全なIDestinationオブジェクトではなく、戻り先の名前(宛先2)を使用する必要があります。
永続キューまたはトピックを宛先2として使用する場合、プロセスは正常に機能します。ただし、一時キューの文字列名を使用して作成しようとすると、常に失敗します。
エラーはありません。メッセージが届かないだけです。
なぜ何かアイデアはありますか?
示されているリターンメッセージを送信するためのサンプルコード:
(「インスタンス」は作業オブジェクトであり、ReplyToアドレスおよびその他の情報が含まれています)
c# - Java と C# 間の DateTime 変換でエラーが発生する可能性はありますか?
バックグラウンド
ActiveMq と対話するために Apache の NMS ライブラリを使用しています。送信されたすべてのメッセージには、プロデューサーによってタイムスタンプが付けられます。タイムスタンプを から差し引いてメッセージのレイテンシーを調べています。レイテンシーDateTime.UtcNow
は 0 ~ 100 ミリ秒と予想されますが、代わりに、レイテンシーが -1000 ~ 1000 ミリ秒と報告されています。明らかに負のレイテンシーは意味をなさないので、最初はシステム クロックが同期していないのではないかと疑っていましたが、今ではそれらが正しく、互いに 20 ミリ秒以内であることを独自に確認しました。
その他の背景
システムクロックを使用してブロードキャストメッセージの遅延を測定するのは良い考えですか?
質問
この不一致は、.Net と Java の間で日付が処理される方法が原因である可能性があると考えています。
- Java から .Net への/からの変換は損失がありますか?
- 私が観察していた大きな負の期間はコンバージョンで説明できますか?
- 時差を説明できるものは他にありますか?
MessageProducer.cs -- プロデューサが NMSTimestamp を設定
ActiveMqMessage.cs -- NMSTimestamp を Java 時間に変換し、Message に保存します。
Message.cs -- Timestamp はワイヤ形式の日付を保持し、メッセージ マーシャラーはこの値を直接設定します
DateUtils.cs -- 変換の実行に使用
私のコードは次のようにレイテンシを計算します
activemq - Apache.NMS APIを使用してActiveMQキューをプログラムでパージするにはどうすればよいですか?
Apache.NMS(C#)を使用してプログラムでキューをパージする機能が必要です。NMS APIを調べてきましたが、そのような機能はありません。それは存在しますか?
c# - ActiveMQ 5.3 と NMS による配信の遅延
NMS の新しい遅延配信機能を使用しようとしています。
schedulerSupport 属性が構成ファイルに設定されており、次のコードを使用して、ユーザーが選択した日時に達するまでメッセージの配信を遅らせようとしています。
コード(現在は機能していないようです)は次のとおりです。
この例のどこが間違っているか指摘できますか?
どうもありがとう!
apache - Apache NMS を使用した大きなファイルの転送
Apache NMS を介して (ActiveMQ を使用して) 大きなファイルを転送する場合、現在、いわば最先端と見なされているものは何ですか? コンテンツ全体を StreamMessage に入れますか? ただし、ファイルは実際には JMS 経由でストリーミングされず、コンテンツ全体がメモリ (またはディスク?) に存在し、一度に送信されるため、ここでの命名は少し誤解を招くものであることがわかりました。ここで、100 MB を超えるファイルで問題が発生しました: Apache.NMS.NMSException : Unable to write data to the transport connection: An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full
.
BlobMessage は NMS ではサポートされていません...ファイルをチャンクに分割し、反対側で再構築する以外に選択肢はありません。
ありがとう、クリスティアン。