17

ウィキペディアは次のように定義しXMPPています。

...XML に基づくメッセージ指向ミドルウェアのオープン標準通信プロトコル。

xmpp.org は次のように定義しXMPPています。

Extensible Messaging and Presence Protocol (XMPP) は、リアルタイム通信用のオープン XML テクノロジであり、幅広いアプリケーションを強化します。

これらの定義は両方とも非常に正確であると確信していますが、Java 開発者である私が実際に XMPP で何ができるかについては何も教えてくれません!

たとえば、XMPP はメッセージ指向ミドルウェア (MOM) で使用できると聞いたことがあります。どうして?XMPP を Apache Camel ルート、ESB、または SOA 実装と何らかの方法で統合して、より優れた/高速/堅牢なビジネス層を提供できますか? もしそうなら、どのように?!?!

いくつかの実用的な例 (MOM 中心であることが望ましい) と共に、XMPP に関する優れた King's-English の説明を提供していただければ幸いです。前もって感謝します!

4

5 に答える 5

17

XMPPは、さまざまなメッセージングベースのアプリケーションに使用できます。基本的に、XMLベースのメッセージングアプリケーションを構築するために使用できるコアサービスを提供します。分散型のクライアントサーバーアーキテクチャに基づいており、通信に長寿命のTCP接続を利用しています...

コアサービスには...

  • チャネル暗号化、認証、プレゼンス、連絡先リスト、1対1メッセージング、マルチパーティメッセージング、通知
  • サービスディスカバリ、機能アドバタイズメント、構造化データ形式、ワークフロー管理、ピアツーピアメディアセッション

教科書のユースケース...

  • インスタントメッセージング(プレゼンス、連絡先リスト、1対1のメッセージングを使用)
  • グループチャット、ゲーム、システムコントロール、ジオロケーション、ミドルウェア/クラウドコンピューティング、データシンジケーション
  • ボット(天気、データベースインターフェース、システム監視)

メッセージングモード/パターン...

  • ポイントツーポイントメッセージングは​​、特定の受信者に送信するために使用されます
  • マルチユーザーメッセージングは​​、受信者のグループにメッセージを送信するために使用されます
  • パブリッシュ/サブスクライブのサポートは、大量のイベントがあり、システムがイベントのさまざまなサブセットに関心がある場合に使用されます。パブリッシャーはイベントをトピックに入れ、サブスクライバーは関心のあるトピックを示します。これにより、パブリッシャー/サブスクライバーが分離され、スケーラブルなリアルタイムメッセージングが可能になります。詳細については、次の記事を参照してください:http ://www.isode.com/whitepapers/xmpp-pubsub.html

展開方法...

  • XMPPユーザー-通常のユーザーとして接続し、ユーザー宛てのリクエストに応答します
  • XMPPサーバープラグイン-サーバープラグインアーキテクチャの一部としてデプロイ
  • XMPPコンポーネント-プラグインのように接続して動作するXMPPサーバーの外部のサービス

Java統合

  • Smack API-純粋なJavaライブラリであり、アプリケーションに組み込んで、完全なXMPPクライアントから、通知メッセージの送信やプレゼンスを有効にするデバイスなどの単純なXMPP統合まであらゆるものを作成できます。
  • CamelXMPP -CamelルートでSmackAPIとの統合を可能にするCamelコンポーネント

あなたの特定の質問に対して「それはSOA/ミドルウェアで使用できますか?」...

  • はい、XMLメッセージングとXMPPAPIを介してアプリケーションを相互に接続するために使用できます
  • 最適なテクノロジーの選択が要件に大きく依存するかどうか
  • 1つの良いユースケース、インタラクティブなシステム監視/管理...ここに他のいくつかの例があります

また、XMPPとCamelの統合は簡単です。Googleトークサーバーとのインターフェースの基本的な例については、このcamel-xmpp単体テストを参照してください。また、Camelのフレームワークを使用すると、アプリケーションを構築し、さまざまなメッセージングテクノロジ(JMS、STOMP、minaなど)を簡単に交換できます。

于 2012-04-09T23:29:37.617 に答える
4

XMPP は、リアルタイム通信のためのオープンで拡張可能な標準です。

XMPP には、そのrfcで定義されているコアが付属しています。これは、インスタント メッセージングを実行し、プレゼンス情報を交換するための基本的なプロトコルを記述しています。ただし、XMPP が本当に優れているのはその拡張性です。XMPP は、通信のプロトコルを作成するためのビルディング ブロック (プレゼンス、メッセージ、および iq スタンザ) を定義します。これらは通常、拡張子として提供されます。現在利用可能な標準拡張機能のリストは、ここにあります。これらの中で最も重要なものは、通常、一般的なすべての XMPP サーバーで利用できます。XMPP をメッセージ指向のミドルウェアとして適切なものにしているのは、まさにこの拡張性です。

例として、ミドルウェアの典型的なパターンであるPublish-Subscribeを取り上げてみましょう。これは、単純なメッセージングで十分なエンティティがいくつかあるシナリオから離れるとすぐに必要になります。PubSub は、エンティティまたはプロデューサーが、他のエンティティであるコンシューマーによって消費される情報を生成する状況で使用されます。通常、情報は、コンシューマーがサブスクライブしているノードに書き込まれます。サブスクライブすると、アイテムが追加/更新/削除されたときに通知を受け取ります。PubSub は、長時間実行されるジョブをキューに入れ、ワーカーにそれらを処理させることから、マイクロブログに至るまで、信じられないほど多くのユースケースをエレガントにカバーできます。XMPP には、PubSub を標準的な方法で処理するための非常に堅牢で広く利用可能な拡張機能があります。XEP-0060と、公開、購読、通知、およびセキュリティを処理するためのワークフローをそのまま提供します。XEP のユースケースを見ると、全体が単純であることがわかります。

現在、ほとんどのユースケースは既存の標準拡張機能を使用 (または悪用) することでカバーされていますが、最終的には、他の場所ではカバーされていない小さな追加のカスタム プロトコルが必要になる場合があります。選択した言語を使用して、独自のプロトコルを定義するXMPP コンポーネントを作成できます。次に、コンポーネントを実行中の XMPP サーバーに接続し、単純な名前空間を使用して、処理できるメッセージの種類をサーバーに知らせ、サーバーに接続しているクライアントにプロトコル機能をアドバタイズさせます。これをどれだけ単純または複雑にできるかには際限がありません。より良い例がありませんが、説明には十分かもしれませんは私が書いたコンポーネントで、XMPP を活用して Plone CMS でリアルタイムの共同編集を行います (Google ドキュメントに似ています)。詳細は複雑になる可能性がありますが、そのページの「プロトコル仕様」を参照すると、アイデアが得られると思います。

最後に、@boday が言及しているように Java 固有のライブラリに関しては、Apache Camel 統合と同様に簡単に開始できるライブラリがあります (ただし、私が見る限り、単純なメッセージングのみを行います)。ただし、XMPP がどのように機能するかを理解し、既存のライブラリの使用を超えることができるようにするための投資は、非常に価値があり、非常に強力でありながらシンプルな統合につながる可能性があることに注意してください。

于 2012-04-10T15:28:19.737 に答える
4

Google (キーワード: XMPP Java MoM の例) を使用して、インターネット上で見つかったあらゆる種類のソースからの情報を組み合わせたり、XMPP の定義を書き直したり (またはコピーしたり) することはできますが、もちろんそうはしません。多すぎます。また、ご利用いただける例もありません。

以下に、私が最も興味深いと思ったリンクをリストしますので、読み始めて、このテーマについてより多くの知識を得ることができます.

1) http://www.xmpp.org/ これはおそらく最良の出発点です。メニューを左から右、上から下にブラウズします。それが私がしたことです。サイトにはサーバー、クライアント、およびライブラリがリストされているため、この方法で目的の例を見つけることができるはずです.

2) http://www.ibm.com/developerworks/webservices/library/x-xmppintro/index.html MoM についても言及している明確な記事。Java の例はありませんが、Ruby です。

3) http://fyi.oreilly.com/2009/05/what-c ​​an-you-do-with-xmpp.html 本を手に入れたほうがいいのではないでしょうか? 記事に例はありません。

4) http://kirkwylie.blogspot.com/2008/07/real-mom-is-hard-lets-use-xmpp.html 最後の行が基本的に述べている興味深い記事: AMQP または JMS を使用できる場合、XMPP を使用する理由?

これが、必要なものを見つけるのに役立つことを願っています。

于 2012-04-10T15:45:07.710 に答える
-2

XMPP は基本的に、チャット ルーム クライアントがチャット サーバーと通信するためのプロトコルです。Camel を使用すると、XMPP と統合して、そのようなメカニズムからメッセージを消費したり、そのようなメカニズムにメッセージを生成したりできますhttp://camel.apache.org/xmpp.html

ビジネス層、ESB、SOA など、および MOM について話し始めると、ポイント ツー ポイントおよびパブリッシュ サブスクライブ メッセージングをサポートするメッセージング メカニズムを探していることでしょう。おそらく、保証されたメッセージング、高可用性、きめの細かいセキュリティなどについても考えているでしょう。テキスト メッセージを読み込んでチャット サーバーに書き込むメカニズムからこれらを取得することはできません。ActiveMQ などのメッセージング プラットフォームは、はるかに適している可能性があります。

XMPP を統合メカニズムと一緒に使用することを検討する例はほとんどありません。おそらく、開発チャット ルームへの通知メカニズムとして、または指示のためにチャット サーバーを監視するサーバーを制御するためのダクトテープ メカニズムとしてです。

于 2012-04-09T12:29:12.097 に答える