5

D-Bus 仕様によると、

D-Bus は、アプリケーションが互いに通信するための簡単な方法です...現在、通信するアプリケーションは 1 台のコンピューター上にあります...

D-Bus のようなものが欲しいのですが、複数の Linux マシンで動作するようにしたいのですが、ファイアウォールが関係している可能性があります。たとえば、メール サーバーが重要なメッセージを受信したと判断した場合、自宅のコンピューターが認識できるバスにイベントを投稿し、linpopupウィンドウを起動して応答できるようにしたいと考えています。

私が興味を持っているイベントは比較的まれなので、低パフォーマンスの手法で問題ありません。しかし、車輪の再発明はしたくありません。また、可能な限りシェル スクリプトやその他の高水準言語で記述し、C で記述することはできるだけ少なくしたいと考えています (ただし、それが必要な場合は、C API を呼び出しても構わないと思っています)。

私が D-Bus の公式 Web ページを解釈すると、D-Bus が複数のコンピュータと通信できるようになればいいのですが、うまくいきません

編集:D-Busについて私にとって魅力的なのは、公開と購読のモデルです:

  • 興味深いイベントを観察するマシンは、そのイベントを「システム」に公開します。

  • 特定のイベントに関心のあるマシンは、それらのイベントのみをサブスクライブします。イベントが発生すると、「システム」がマシンに知らせます。

D-Bus では、「システム」は単一のマシンです。複数のマシンで同様のものが必要です。これにより、マシン間の TCP や SMTP 通信などの直接的なソリューションが除外されます。しかし、すべての出版と購読のリクエストを受け取る中央サーバーがあることをうれしく思います。Advanced Message Queuing Protocol (AMQCP)を理解するよりも、独自のプロトコルを作成する方が簡単だと思い始めています。

パフォーマンスは問題ありません。シンプルさは間違いなくオブジェクトです。

もう一度: どのソフトウェアを見ればよいですか?

4

8 に答える 8

3

メッセージとアプリ間の通信を管理するための「新しいもの」はどうやら Rabbit です。

メッセージ、ルーティング、およびセキュリティを確立する AMQP の実装です。

これをチェックして:

http://www.rabbitmq.com

http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol

于 2009-05-02T06:35:14.523 に答える
3

メッセージング ソリューションを検索する必要がありますが、使用する言語によって異なります。Java には、JMS (Java Message Service) と呼ばれるこの機能がしばらくありました。ただし、他の実装が存在します。

  • ZeroMQには、C、C++、Python、.NET/Mono などの API バインディングがあります。
  • OpenAMQには、Python、Java、Ruby、および C の API バインディングがあります。

私はさまざまなフレームワークの経験がないので、何を使用すればよいかはわかりませんが、これらを試してみてください。

于 2009-05-02T06:59:30.470 に答える
1

このような既製のソリューションはありません。

私の提案は、curl または wget を使用して HTTP POST 要求を非常に単純な Web アプリケーションに送信するスクリプトを作成し、情報を含めることです。そして、別のマシンが同じ Web を間隔を置いてポーリングし、情報を取得します。

Cometはポーリングの不快感を改善することができますが、おそらくより多くの努力が必要になるでしょう。

于 2009-05-02T00:31:49.467 に答える
1

要点を見逃しているかもしれませんが (完全に可能です!)、SMTP を使用して電子メール メッセージを送信しないのはなぜですか? またはTCPパケットで、反対側にリスナープログラムがありますか?

于 2009-05-01T23:29:25.433 に答える
1

TCP/IP ベースのメッセージ キュー (MQ) / メッセージ指向ミドルウェア (MOM) ソリューションは、ニーズを満たす必要があります。ほとんどの成熟したオファリングは、さまざまな言語のネイティブ言語バインディングを提供します。ActiveMQ には幸運がありました。単純なスクリプト タスクには十分な CLI インターフェイスがあります。

背景のビットはここで見つけることができます: http://en.wikipedia.org/wiki/Message-directional_middleware

幸運を、

シャノン

于 2009-06-30T21:59:29.497 に答える
0

マシン間でD-Busメッセージをブリッジすることを検討する必要があります。D-Busメッセージを受信し、それらをフィルタリングして、特定のメッセージをAMQPトピック交換に送信するメッセージブリッジアプリを作成します。これは、MQブローカーとしてRabbitMQを使用して簡単に行うことができ、AMQPモデルを学ぶために時間をかける価値があります。RabbitMQサイトには、ドキュメント、チュートリアル、ブログ、FAQが満載です。

AMQPの一般的な使用法は、メッセージプロデューサープロセスと、別のマシン上にある可能性のあるメッセージコンシューマープロセスを使用することです。プロデューサーはブローカーに接続するだけで、ルーティングキータグを使用してメッセージをトピック交換に公開します。Exchangeは、メッセージをキューにルーティングするブローカー上のプロセスです。メッセージコンシューマーもブローカーに接続しますが、同じブローカーではない場合があります。次に、コンシューマーは使用するキュー名を宣言します。そして、そのキュー名をバインディングキーを使用して名前付きExchangeにバインドします。バインディングキーは、交換に入るルーティングキーと照合されるパターンです。最も単純なケースでは、ルーティングキーとバインディングキーは同じですが、バインディングにワイルドカードパターンが含まれているとさらに興味深いものになります。

AMQPを本当に学びたくない場合は、0MQを使用してマシンをブリッジします。0MQははるかに単純で、基本的に複数のエンドポイントを持つソケットを持つことができます。

于 2011-05-07T18:25:50.697 に答える