ホームページ  >  記事  >  Java  >  SpringBootでメッセージキューRabbitMQを統合する方法は何ですか?

SpringBootでメッセージキューRabbitMQを統合する方法は何ですか?

PHPz
PHPz転載
2023-05-16 17:25:061226ブラウズ

    はじめに

    Spring プロジェクトでは、Spring-Rabbit を使用して RabbitMQ を操作できます。

    特に Spring Boot プロジェクトでは、対応する amqp スターター依存関係を導入し、RabbitTemplate を便利に使用してメッセージを送信し、アノテーションを使用してメッセージを受信するだけです。

    通常、開発プロセス中:

    プロデューサー プロジェクト:

    • application.yml ファイルは RabbitMQ 関連情報を構成します。

    • #プロデューサ プロジェクトに構成クラスを記述してスイッチとキューを作成し、それらをバインドします

    • RabbitTemplate オブジェクトを挿入し、RabbitTemplate オブジェクトを通じてスイッチにメッセージを送信します

    コンシューマ エンジニアリング:

    • application.yml ファイル構成 RabbitMQ 関連情報

    • メッセージ処理クラスを作成します。キュー内のメッセージを受信して​​処理します

    プロダクション終了

    1. プロデューサー SpringBoot プロジェクト (Maven) を作成します

    2. はじめに開始、依存座標
    & lt; 依存関係 & gt;
    & lt; グループ & gt; org.springFramework.Boot & LT;/Groupid & GT;
    & LT; ArtiFactid & GT; Spring-Boot-Starter- AMQP & LT;/Artifactid & GT;
    & LT; /dependency>

    3. yml 設定と基本情報設定を書き込む

    4. スイッチ、キュー、バインディング関係の設定クラスを定義する
    5. RabbitTemplate を挿入し、メソッドを呼び出し、メッセージ送信を完了します

    依存関係を追加します

    #pom.xml ファイルの内容を次のように変更します:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.4.RELEASE</version>
        </parent>
        <groupId>com.itheima</groupId>
        <artifactId>springboot-rabbitmq-producer</artifactId>
        <version>1.0-SNAPSHOT</version>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-amqp</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
            </dependency>
        </dependencies>
    </project>

    Startup class

    package com.itheima.rabbitmq;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    @SpringBootApplication
    public class ProducerApplication {
        public static void main(String[] args) {
            SpringApplication.run(ProducerApplication.class);
        }
    }

    RabbitMQ の構成

    構成ファイル

    次の内容を含む application.yml を作成します:

    spring:
    Rabbitmq:

    ホスト: localhost
    ポート: 5672
    仮想ホスト: / itcast
    ユーザー名: heima
    パスワード: heima

    バインド スイッチとキュー

    RabbitMQ キューとスイッチをバインドするための構成クラスを作成します com.itheima.rabbitmq.config .RabbitMQConfig

    package com.itheima.rahhitmq.config;
    import org.springframework.amqp.core.*;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    @Configuration /// 配置类
    public class RabbitMQConfig {
        public static final String EXCHAGE_NAME = "boot_topic_exchange";
        public static final String QUEUE_NAME = "boot_queue";
        // 交换机
        @Bean("bootExchange")
        public Exchange bootExchange(){
            // 构建交换机对象
            return ExchangeBuilder.topicExchange(EXCHAGE_NAME).durable(true).build();
        }
        //Queue 队列
        @Bean("bootQueue")
        public Queue bootQueue(){
            return QueueBuilder.durable(QUEUE_NAME).build();
        }
        //队列和交换机的关系 Binding
        /**
         * 1 知道那个队列
         * 2 知道那个交换机
         * 3 routingKey
         */
        @Bean
        public Binding bindQueueExchange(@Qualifier("bootQueue") Queue queue, @Qualifier("bootExchange") Exchange exchange){
            return BindingBuilder.bind(queue).to(exchange).with("boot.#").noargs();
        }
    }

    コンシューマ プロジェクトのビルド

    プロジェクトの作成

    生産終了

    1. プロデューサー SpringBoot プロジェクトを作成します

    ##2. 開始、依存関係座標を導入します

    ##org.springframework.boot

    ##spring-boot-starter-amqp

    yml 設定、基本情報設定を書きます

    スイッチ、キュー、バインディング関係の設定クラスを定義します

    RabbitTemplate を挿入し、メソッドを呼び出し、メッセージ送信を完了します

    依存関係を追加します


    pom.xml ファイルの内容を次のように変更します。

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.4.RELEASE</version>
        </parent>
        <groupId>com.itheima</groupId>
        <artifactId>springboot-rabbitmq-consumer</artifactId>
        <version>1.0-SNAPSHOT</version>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-amqp</artifactId>
            </dependency>
        </dependencies>
    </project>

    クラスを開始します。##
    package com.itheima.rabbitmq;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    @SpringBootApplication
    public class ConsumerApplication {
        public static void main(String[] args) {
            SpringApplication.run(ConsumerApplication.class);
        }
    }

    RabbitMQ を構成します

    ##次の内容を含む application.yml を作成します。

    #spring:

    Rabbitmq:

    ホスト: localhost

    ポート: 5672

    仮想ホスト: /itcast

    ユーザー名: heima

    パスワード: heima


    メッセージ リスニング処理クラス

    メッセージ リスナーの書き込み com.itheima.rabbitmq .listener.MyListener

    package com.itheima.rabbitmq.listener;
    import org.springframework.amqp.rabbit.annotation.RabbitListener;
    import org.springframework.stereotype.Component;
    @Component
    public class MyListener {
        /**
         * 监听某个队列的消息
         * @param message 接收到的消息
         */
        @RabbitListener(queues = "item_queue")
        public void myListener1(String message){
            System.out.println("消费者接收到的消息为:" + message);
        }
    }

    Test

    プロデューサー プロジェクトでテスト クラスを作成するspringboot-rabbitmq-Producer にアクセスしてメッセージを送信します:
    package com.itheima.rabbitmq;
    import com.itheima.rabbitmq.config.RabbitMQConfig;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.amqp.rabbit.core.RabbitTemplate;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class RabbitMQTest {
        @Autowired
        private RabbitTemplate rabbitTemplate;
        @Test
        public void test(){
            rabbitTemplate.convertAndSend(RabbitMQConfig.ITEM_TOPIC_EXCHANGE, "item.insert", "商品新增,routing key 为item.insert");
            rabbitTemplate.convertAndSend(RabbitMQConfig.ITEM_TOPIC_EXCHANGE, "item.update", "商品修改,routing key 为item.update");
            rabbitTemplate.convertAndSend(RabbitMQConfig.ITEM_TOPIC_EXCHANGE, "item.delete", "商品删除,routing key 为item.delete");
        }
    }

    まず上記のテスト プログラムを実行し (最初にキューを宣言してバインドできます)、次にコンシューマーが開始され、対応するメッセージが受信されるかどうかを確認します。コンソール上のコンシューマ プロジェクト springboot-rabbitmq-consumer にあります。

    SpringBoot は、RabbitMQ を迅速に統合する方法を提供します

    基本情報は yml で構成され、キュー対話マシンとバインディング関係は構成クラスの Bean を使用して構成されます

    プロダクションエンドは、RabbitTemplate を直接挿入してメッセージ送信を完了します

    コンシューマエンドは @RabbitListener を直接使用してメッセージ受信を完了します

    以上がSpringBootでメッセージキューRabbitMQを統合する方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。