最も単純なケース:
[email protected]:n_zh A / RabbitMQの-demo.git
どのようにMQと簡単な例の分析によって送信されたメッセージを引っ張っ:
パブリック接続newConnectionと()スローIOExceptionが、TimeoutException { 返す newConnectionと(この .sharedExecutor、Collections.singletonList(新住所(はGetHost()、のgetPort()))); }
最終コール:
デフォルトパラメータのエグゼキュータは、MQアドレス+ポートへのアドレスが使われる、clientProvideNameがnull、nullです
観察し続けます。
FrameHandlerFactory fhFactory = createFrameHandlerFactory()。
実際には、これはFrameHandlerFactoryのSocketFactoryにあるパッケージを持っていました:
カプセル化されているクラスにSocketFrameHandler最終的なリターンは、ソケットです。
AMQConnection新しいターゲットオブジェクトFrameHander以前の使用に戻り、ダウンする続行します。
AMQConnectionは、start()メソッドを呼び出します。
このforループの下に、最初のスタートの直接復帰後??
AMQConnectionオブジェクトを返す③
CONNECTINでチャンネルを作成するには、オブジェクトが返されますChannelN
④basicPublish方法ChannelNオブジェクトが発表
最初の交換によって構築routingKeyおよび他のパラメータを公開し、その後ターゲットを構築AMQCommand
決勝:
プロセス:
消費者側:
またConnectionFactoryの、接続、チャンネルを得るために始めた、とチャンネルが運営して(関係なく、生産面や消費者側の、MQは、チャネルを介して動作するようです)
①消費は最終消費者キューを宣言します
// 5、一般的な消費者 QueueingConsumer queueingConsumer = 新新 QueueingConsumer(チャネル)。
②チャンネルによって、このキューとメッセージの関連付けを消費します
消費者は、キュー内のメッセージを監視するためのキュー。あなたはnextDeliveryメソッドを呼び出すと、内部実装は、メソッド呼び出しキューを取ることです。このメソッドの役割は:キューの先頭を取得および削除、待機は(必要ならば)要素の前に利用可能となっています。メッセージがない場合は、それがブロックされている、ことを意味します。
結果:
消費者側:
======メッセージを取得するために待機
生産面:
これは、メッセージを送信しました
ターミナルは、メッセージの生成、消費出力側を送信する場合:
取得するために待機======メッセージ うさぎこんにちは、エンド消費を - MQの 消費うさぎこんにちは、エンド - MQの 消費うさぎこんにちは、エンド - MQの 消費うさぎこんにちは、エンド - MQの 消費こんにちはのウサギの終わり -mq
上記のコードは、交換を指定し、キュー名routingkeyプロデューサーと同じの消費者側は、成功を転送することができればそれゆえのRabbitMQサーバは自動的に、デフォルトの交換(すなわちデフォルト交換)でメッセージを前方にかかりますが、それ以外の場合は失敗しません。