RabbitMQのメッセージングミドルウェアノートを統合SpringBoot

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 + '\'' +
                "著者= '" +著者+ '\'' +
                「}」
    }
}

 

おすすめ

転載: www.cnblogs.com/amaocc/p/12348030.html