ページ

2011年1月17日

AMQPっとは? その1

会社の中でAMQPを知らない人も多かったので、まとめ。

AMQPとは

  • Advanced Message Queue Protocol
  • メッセージングシステムのオープンな標準仕様

歴史
  • 2004年中頃から2006年中頃後にJPMorgan ChaseとiMatixがC/C++とJavaで開発
  • プロトコルを仕様書として作成
  • RedHat, Cisco, TWIST, IONAとiMatrixがワーキンググループ作成
  • 2006年6月0.8
  • 2006年12月0.9
  • 2008年11月0.9.1
  • 2010年5月1.0ドラフト
    • いろいろ問題があったので1.0は交換とバインディングのコンセプトを変えるらしい

特徴
  • メッセージ指向
  • キューイング
  • ルーティング
    • ポイント間
    • pubsub
  • 信頼性
  • セキュリティ
  • 複数言語間、ベンダー間での相互運用
    • APIは定義しない
    • プロトコル(データフォーマット)を指定

メッセージパターン
  • pubsub: 配信条件に応じて複数の送信先にメッセージ配信
  • round-robin: タスクを複数のクライアントに配信
    • 例: タスクをround-robinで分散処理させて、pubsubでタスクの結果をフィードバック

仕様書の定義
  • クライアントとサーバ(ブローカー)間のバイナリプロトコル
  • 実装すべきサーバのキューイングモデルとサービス概要

ブローカーの機能
  • メッセージキューイング (メッセージの保存)
  • メッセージ交換
    • 1対1
    • 1対N
    • 1対Nの中の1(タスクの分散とか)

バインディング
  • メッセージのルーティングルール

メッセージの構成
  • ルーティング、アプリケーションが使用するプロパティ
  • コンテンツ(バイナリ)

メッセージのルーティング
  • Basic.Publish, Basic.Deleverコマンドでブローカとクライアント間をメッセージが流れる
    • コマンドの実行は非同期
  • Basic-Get/Get-Okコマンドは同期処理

例外
  • ブローカに例外メッセージの処理方法を指定。
(つづく)

0 件のコメント: