問題タブ [pgm-protocol]
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# - 受信キューからメッセージを読み取らずに MessageQueue メッセージを受信していますか?
System.Messaging.MessageQueueを使用して、LAN でマルチキャスト System.Messaging.Message を送受信しています。これは正常に動作します。
ただし、メッセージ キューを使用せずにメッセージを受信する必要があります。
MessageQueueは PGM プロトコル (113) を使用してメッセージを送信するため、ソケットを使用して PGM (プロトコル 113) をリッスンするタイプを構築しようとしています (例: new Socket(AddressFamily.InterNetwork, SocketType.Rdm, (ProtocolType)113);)。型はメッセージ データを受信していますが、テキスト形式です (soap フォーマッタ セクションを使用 - msdn http://msdn.microsoft.com/en-us/library/cc219170.aspxの例を参照) 。
System.Messaging.Messageにキャストして実際のデータを取得できるように、明らかにバイナリ データが必要です。
これを行う方法についてのアイデアは大歓迎です。
geolocation - 複数の異なる地理的位置にマルチキャストを配信する
アプリケーションで1つの論理PGMベースのマルチキャストアドレスを使用する必要がありますが、そのようなアプリケーションを複数の異なる地理的位置(つまり、米国/ヨーロッパ/オーストラリアを考えてください)で「シームレスに」実行できるようにする必要があります。
アプリケーションはかなりのスループット (1 日に数百万のビジネス メッセージ) であり、多くの小さいながらも非常に頻繁にメッセージを送信するため、遅延が要求されます。古典的な Atom pub は、レイテンシの外部制限により、ここでは機能しません。
これらのデータセンターを接続するためのいくつかのオプションを考え出しましたが、最適なものが見つかりません。私が検討したオプションは次のとおりです。1) VPN を介してマルチキャスト メッセージを転送します (VPN はそのような大きな負荷を処理できますか)。2) すべてのマルチキャスト メッセージを「ラッパー メッセージ」に変換し、AMQP 経由で転送します。3) TCP 経由でマルチキャスト メッセージを他の 2 つの場所にトンネリングする専用の社内ゲートを作成します。4) その他の解決策
開発者から追加のコードを書き込む必要がないため、オプション 1 をお勧めします。しかし、信頼できる接続ではないのではないかと心配しています。
そのような接続に適用する規則はありますか?
地理的構成に関する最適なネットワーク構成は、上記の制約に対するものです。
c# - 非管理者アカウントでの Windows PGM ソケット アクセス エラー
PGM ソケットを使用して Windows でデータを送信しようとしています。管理者以外のアカウントを使用して、PGM ソケットから正常にデータをリッスンおよび受信できますが、データを送信するソケットを作成しようとすると、このステップで例外が発生します。
socket.Bind(新しい IPEndPoint(IPAddress.Any, 0));
例外は次のとおりです。
アクセス許可で禁止されている方法でソケットにアクセスしようとしました
管理者アカウントで同じコードを実行すると、正常に動作することに注意してください。管理者アカウントで実行せずに送信者 PGM ソケットを作成する方法はありますか?
c# - 管理者以外のアカウントで複数の PGM リッスン ソケットを使用してアクセス例外を取得する
次のコードは、管理者アカウントでは正常に機能しますが、管理者以外のアカウントでは成功を 2 回出力し、System.Net.Sockets.SocketException (0x80004005) をスローします: アクセス許可によって禁止されている方法でソケットにアクセスしようとしました。これがなぜなのか、誰にも洞察がありますか?
参考までに、ここでの実際の使用例は、同じ PGM アドレスとソケットを使用する複数のアプリケーションです。(マルチキャストを介して) リアルタイム更新をプッシュします。この Poof of concept は、これが私たち自身のライブラリによって引き起こされたものではないということです。
}
node.js - zeromq epgm pub/sub が機能しない
私はnode.jsの例を扱っています。ubuntu 12.10 マシンに openpgm と zeromq 3.2 をインストールしました。コードは次のとおりです。
そして他のアプリ:
var zmq = require('zmq') , port = 'epgm://eth0;239.192.1.1:5555';
var socket = zmq.socket('sub');
socket.identity = 'サブスクライバー' + process.pid;
socket.connect(ポート);
socket.subscribe('AAPL'); socket.subscribe('GOOG');
console.log('接続されました!');
socket.on('message', function(data) { console.log(socket.identity + ': 受信データ ' + data.toString()); });
正しいマルチキャスト アドレッシングを使用しているかどうかわかりません。これらのアプリを同じマシンとネットワーク内の別のマシンで一緒に試しました。私はその部分を考えていなかったと確信していますが、それについての良い説明がどこにも見つからないようです. しかし、とにかくこれが同じマシンで動作することを期待していました。何か案は?
PS: 正確に何が起こるかを説明するのを忘れました: 基本的に、プッシュ プログラムはエラーなしですべてのメッセージをプッシュし、プル プログラムは開始しますが、メッセージを受け取りません。
tcp - ソフトウェアベースのロードバランサーである HAProxy で ZeroMQ を使用できますか?
HAProxy は、http および tcp ディストリビューションをサポートするソフトウェアベースのロード バランサーです。プラグマティック マルチキャスト (pgm) を有効にして ZeroMQ を使用する場合、zmq ピア間の仲介として HAProxy を使用すると pgm と競合しますか? それとも F5 などのハードウェア ベースのロード バランサーを使用する必要がありますか?
windows - PGM winsock2 がソケットを作成できませんでした
Windows ソケットの PGM (Pragmatic General Multicast) について知りました。msdn で送受信ソケットを構成する方法を読みましたが、機能していません。
これまでのコードは次のとおりです。
ソケットを作成しようとすると、エラー コード 10044 (Socket type not supported) が表示されます。PGM の使用を有効にするにはどうすればよいですか?
現在、MSMQ がインストールされた Windows 7 で作業しています。
編集 これは私が読んだmsdnサイトです。
ubuntu-12.04 - Ubuntu 12.04 で openpgm を使用する
Openpgm ライブラリの使用中に問題が発生しました。この問題について誰か助けていただければ幸いです。
Ubuntu 12.04 で Openpgm を使用したいと考えています。このリンクによると: " https://code.google.com/p/openpgm/wiki/OpenPgm5CReferenceBuildLibrary " Openpgm は Ubuntu 8.04 から 10.10 でテストされました。
Openpgm(5.2.122)の最新バージョンをダウンロードし、エラーなしで「scons」でコンパイルしました。リンクによると、パス「*./ref/debug/examples/」に「pgmrecv」と「pgmsend」という名前のコンパイル済みの例が表示されるはずですが、そのような例はありません。代わりに「purinrecv」と「purinsend」がありました。最初にレシーバーを次のように実行します: "./purinrecv -lp 3065" 次に、センダーを次のように実行します: "./purinsend -lp 3065 Please work" 、両方にエラー メッセージはありませんでしたが、レシーバーは何も受信しませんでした。どんな助けでも大歓迎です!