Rumah  >  Artikel  >  Java  >  Apakah kaedah SpringBoot untuk menyepadukan baris gilir mesej RabbitMQ?

Apakah kaedah SpringBoot untuk menyepadukan baris gilir mesej RabbitMQ?

PHPz
PHPzke hadapan
2023-05-16 17:25:061281semak imbas

    Pengenalan

    Dalam projek Spring, anda boleh menggunakan Spring-Rabbit untuk mengendalikan RabbitMQ

    Terutama dalam projek but spring, hanya perkenalkan sahaja pergantungan pemula amqp yang sepadan, gunakan RabbitTemplate dengan mudah untuk menghantar mesej dan gunakan anotasi untuk menerima mesej.

    Secara amnya semasa proses pembangunan:

    Kejuruteraan pengeluar:

    • fail application.yml mengkonfigurasi maklumat berkaitan RabbitMQ

    • Tulis kelas konfigurasi dalam projek pengeluar untuk mencipta suis dan baris gilir, dan ikatkannya

    • Suntikan objek RabbitTemplate dan hantar mesej ke suis melalui objek RabbitTemplate

    Kejuruteraan Pengguna:

    • application.yml fail konfigurasi maklumat berkaitan RabbitMQ

    • Buat kelas pemprosesan mesej , digunakan untuk terima mesej dalam baris gilir dan prosesnya

    Tamat pengeluaran

    1 Buat projek SpringBoot pengeluar (maven)
    2 koordinat
    b4b38e33757a6497aa8690936b905cc1
    factId>
     5473f4530c9f6e728f1ecc3ffa992f5e

    3 Tulis konfigurasi yml, konfigurasi maklumat asas

    4 perhubungan
    5. Inject RabbitTemplate, kaedah panggilan dan penghantaran mesej lengkap

    Tambah kebergantungan

    Ubah suai kandungan fail pom.xml seperti berikut:

    <?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>

    Kelas permulaan

    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);
        }
    }

    Konfigurasikan RabbitMQ

    Fail konfigurasi

    Buat application.yml dengan kandungan berikut:

    musim bunga:

    rabbitmq:
    hos: localhost
    port: 5672
    virtual-host: / itcast
    nama pengguna: heima
    kata laluan: heima

    Ikat suis dan baris gilir

    Buat kelas konfigurasi com.itheima.rabbitmq.config yang mengikat baris gilir RabbitMQ dan tukar .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();
        }
    }

    Bina projek pengguna

    Buat projek

    Sebelah pengeluaran

    1. Cipta projek SpringBoot pengeluar

    2 Perkenalkan permulaan, bergantung pada koordinat

    org.springframework.boot

    spring-boot-starter-amqp

    untuk menulis konfigurasi yml, konfigurasi maklumat asas

    untuk menentukan suis, baris gilir dan Kelas konfigurasi perhubungan mengikat
    disuntik ke dalam RabbitTemplate, memanggil kaedah dan melengkapkan penghantaran mesej

    Tambah kebergantungan

    Ubah suai kandungan fail pom.xml seperti berikut:

    <?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>

    Mulakan kelas

    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);
        }
    }

    Konfigurasikan RabbitMQ

    Buat application.yml dengan kandungan berikut:

    spring:

    rabbitmq:
    hos: localhost
    port: 5672
    virtual-host: /itcast
    nama pengguna: heima
    kata laluan: heima

    Kelas pemprosesan mendengar mesej

    Tulis pendengar mesej 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);
        }
    }

    Ujian

    Buat kelas ujian dalam projek pengeluar springboot-rabbitmq-producer dan hantar mesej:

    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");
        }
    }

    Mula-mula jalankan program ujian di atas (tukar dan Barisan boleh diisytiharkan dan diikat dahulu), dan kemudian pengguna dimulakan; sama ada mesej yang sepadan diterima pada konsol dalam projek pengguna springboot-rabbitmq-consumer.

    SpringBoot menyediakan cara untuk menyepadukan RabbitMQ dengan cepat

    Maklumat asas dikonfigurasikan dalam yml, mesin interaktif baris gilir dan hubungan mengikat dikonfigurasikan menggunakan kacang dalam kelas konfigurasi

    Pengeluaran Akhir terus menyuntik RabbitTemplate untuk melengkapkan penghantaran mesej

    Penghujung pengguna secara langsung menggunakan @RabbitListener untuk melengkapkan penerimaan mesej

    Atas ialah kandungan terperinci Apakah kaedah SpringBoot untuk menyepadukan baris gilir mesej RabbitMQ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam