3

私は STOMP と 0MQ の両方に不慣れで、自分自身を結び目に結び付けましたが、一言で言えば、PHP MOM または多数の PHP MOM からの対話を使用して、ブラウザーでのクライアント間の通信を容易にしたいと考えています。WebSocket を使用して、html5 ブラウザー クライアントと MOM エンドポイント間に永続的な二重接続 (利用可能な場合) を提供し、それらのエンドポイントを使用して、1-1、1-多く、多対 1 の関係。

MOM エンドポイントは、さまざまな目的で他のサーバーと通信したり、それらの間で通信したりする可能性があります。0MQ は、これらのサーバー間で情報を迅速に交換するための実行可能な方法であると考えています。クライアント間のメッセージング用のプロトコルとして、STOMP は良さそうです (ただし、プロトコルの定義に問題があることは認識しています)。

....だから、ここが私の混乱のポイントです。STOMP を使用するには、MOM が STOMP ブローカーである必要があり、STOMP ブローカーである場合、0MQ は「ブローカーレス」メッセージング レイヤーであるため、両方を使用する目的を無効にすることはありませんか?

明確にするために、MOM - MOM 通信には 0MQ、クライアント - クライアント通信には STOMP を検討しています。

もちろん、クライアント間の通信を容易にするために 0MQ を再利用する方法はありますか? 私の本当の混乱は0MQにあると思います-それはプロトコルではなく軽量のメッセージングレイヤーですか、それともその両方ですか? レイヤーのみの場合、0MQ を使用して STOMP メッセージを転送できませんか?

誰かが私のために0MQに光を当てることができれば、私はとても感謝しています-ありがとう!

4

1 に答える 1

2

0MQは、サーバーのないソケットのようなAPIを提供し、その上で独自のプロトコルをオーバーレイできます。0MQは、単純な未解釈のバイナリデータを転送します(ただし、一部の言語バインディングは、Python PicklingやJSONなどの特定のシリアル化のサポートを追加します)。

通常のソケットとは異なり、0MQソケットは多対1、1対多にすることができます。

0MQには、メッセージングパターンの概念もあります。たとえば、REQ / REPソケットを定義して、各要求の後に応答が続く必要があるという制約を適用できます。2つの要求を連続して送信することは許可されていません。さまざまな状況に合わせて、他にもさまざまなパターンがあります。

0MQガイドAPIを参照してください

したがって、いくつかの質問に答えるには、0MQは基本的にメッセージング層であり、原則として、通常のネットワークソケットの場合と同様に、0MQソケットを介してSTOMPを送信できるはずです。ただし、Webクライアントが0MQを直接使用できるかどうかはわかりません。言語バインディングが必要であり、ZMQネイティブライブラリが利用可能である必要があります。これにより、Webクライアントの使用が除外されると思います。

于 2011-05-21T21:53:49.903 に答える