0.dockerのRabbitMQインストールコマンド:
ドッキングウィンドウプルのRabbitMQ:3.8 - 管理倉庫ミラーからドッカープル
実行イメージファイル:ドッキングウィンドウの実行-d -p 5672:5672 -p 15672:15672 --nameのRabbitMQのRabbitMQ:3.8 - 管理
ビューコンテナログ:ドッキングウィンドウのログコンテナID
1.pomファイル
< 依存性> < 依存性> < のgroupId > org.springframework.boot </ のgroupId > < たartifactId >ばねブートスタータAMQP </ たartifactId > </ 依存> < 依存性> < のgroupId > org.springframework.boot </ のgroupId > < たartifactId >春・ブート・スターター・ウェブ</ たartifactId > </ 依存関係> <依存関係> < のgroupId > org.springframework.boot </ のgroupId > < たartifactId >ばねブートスタータ試験</ たartifactId > < スコープ>テスト</ スコープ> </ 依存> < 依存性> < のgroupId > org.springframework.amqp < / のgroupId > < たartifactId >スプリングウサギ試験</ たartifactId > < スコープ>試験</ スコープ> </ 依存関係> </ 依存関係>
2.SpringBootスタートアップクラス
/ ** *自動設定 * 1、RabbitAutoConfiguration * 2、コネクション・ファクトリのConnectionFactoryの自動構成。 * 3、RabbitPropertiesカプセル化設定のRabbitMQ * 4、RabbitTemplate:RabbitMQのは、メッセージを送受信します。 * 5、AmqpAdmin:RabbitMQのシステム管理機能コンポーネント。 * AmqpAdmin:バインディング、キューは、Exchangeの作成と削除 * 6、@ EnableRabbit + @RabbitListenerメッセージキューの内容を監視 * / @EnableRabbit @SpringBootApplication パブリック クラスSpringbootAmqpApplication { パブリック 静的 ボイドメイン(文字列[]引数){ SpringApplication.run(SpringbootAmqpApplication。クラス、引数)。 } }
3.プロファイル
春
RabbitMQの:
ホスト:129.211.77.216
ユーザー名:ゲスト
パスワード:ゲスト
ポート:5672
仮想ホスト:/
4.RabbitMQは、クラスのインストール
@Configuration パブリック クラスMyAMQPConfig { @豆 公共MessageConverter messageConverter(){ リターン 新しいJackson2JsonMessageConverter(); } }
5.模擬テスト
@RunWith(SpringRunner。クラス) @SpringBootTest クラスSpringbootAmqpApplicationTests { @Autowired RabbitTemplate rabbitTemplate;
@Autowired AmqpAdmin amqpAdmin;
@テスト 公共 のボイドtestAmqpAdmin(){ // 创建交换器 // 交換交換=新DirectExchange( "amqpadmin.exchange"); // amqpAdmin.declareExchange(為替)。 // 创建队列 // amqpAdmin.declareQueue(新しいキュー( "amqpadmin.equeue")); amqpAdmin.declareBinding(新しいバインディング( "amqpadmin.equeue"、Binding.DestinationType.QUEUE、 "amqpadmin.exchange"、 "amqp.haha"、ヌル)); } / ** *ユニキャスト(ポイントへのポイント) * / @テスト ボイドcontextLoads(){ // メッセージは、独自の構成Aを必要とし、定義されたメッセージ本体およびメッセージヘッダ // rabbitTemplate.send(Exchage、routeKey、メッセージ)。 // デフォルトのメッセージボディとしてオブジェクト、のみのRabbitMQのシーケンスに自動的に送信されるオブジェクトを渡す必要があり; // rabbitTemplate.convertAndSend(Exchage、routeKey、オブジェクト) のHashMap <文字列オブジェクト> =地図新しい新規 HashMapを<> (); map.put(「MSG」、「これは最初のメッセージです」)。 map.put( "データ"、は、Arrays.asList( "HelloWorldの"、123、trueに)); // オブジェクトがシリアライズされるデフォルト後に送信 // rabbitTemplate.convertAndSend( "exchange.direct"、 "atguigu.news"、マップ); rabbitTemplate.convertAndSend( "exchange.direct"、 "atguigu.emps" 、マップ); } // 自動的に変換されたデータをJSON送らする方法、データを受け入れる @Test 公共 のボイド(){受け取ります オブジェクトO = rabbitTemplate.receiveAndConvert( "atguigu.news" )。 System.out.println(o.getClass())。 System.out.println(O) } / ** *放送 * / @テスト 公共 のボイドSENDMSG(){ rabbitTemplate.convertAndSend( "exchange.fanout"、 ""、新新しいブック( "Hongloumeng"、曹操の" )); } }
6.リスナーがメッセージを受信します
@Service パブリック クラスBookServiceを{ @RabbitListener(キュー = "atguigu.emps" ) 公共 ボイド(ブックブック)を受け取ります{ System.out.println(「メッセージ」+ 帳); } @RabbitListener(キュー = "atguigu" ) 公共 ボイドreceive2(メッセージメッセージ){ System.out.printlnは( "メッセージ本文を受信:" + 。message.getBody()のgetClass())。 System.out.println( "メッセージヘッダを受信:" + message.getMessagePropertiesを())。 } }
7.クラスのボディの使用
パブリック クラスブック{ プライベート文字列bookName。 プライベート文字列の作者。 パブリックブック(){ } 公共ブック(文字列bookName、文字列の作成者){ この .bookName = bookName。 この .author = 作者。 } パブリック文字列getBookName(){ 戻りbookNameと、 } 公共 ボイドsetBookName(文字列bookName){ この .bookName = bookName。 } パブリック文字列GETAUTHOR(){ 戻り著者。 } 公共 ボイドSETAUTHOR(文字列の作成者){ この .author = 著者。 } @オーバーライド 公共の文字列のtoString(){ リターン "ブック{" + "bookName = '" + bookName + '\'' + "著者= '" +著者+ '\'' + 「}」。 } }