Heim  >  Artikel  >  Java  >  Mit welcher Methode integriert SpringBoot die Nachrichtenwarteschlange RabbitMQ?

Mit welcher Methode integriert SpringBoot die Nachrichtenwarteschlange RabbitMQ?

PHPz
PHPznach vorne
2023-05-16 17:25:061281Durchsuche

    Einführung

    Im Spring-Projekt können Sie Spring-Rabbit zum Betrieb von RabbitMQ verwenden.

    Besonders im Spring-Boot-Projekt müssen Sie nur die entsprechende amqp-Starterabhängigkeit einführen. Zum Senden ist es praktisch, RabbitTemplate zu verwenden Nachrichten. Verwenden Sie Annotation, um Nachrichten zu empfangen.

    Im Allgemeinen während des Entwicklungsprozesses:

    Produzentenprojekt:

    • application.yml-Datei zum Konfigurieren von RabbitMQ-bezogenen Informationen;

    • Schreiben Sie Konfigurationsklassen im Produzentenprojekt, um Schalter und Warteschlangen zu erstellen, und binden Sie sie. Definieren Sie

    • , um das RabbitTemplate-Objekt einzufügen und Nachrichten über das RabbitTemplate-Objekt an den Switch zu senden.

    Consumer Engineering:

    • application.yml-Datei, um RabbitMQ-bezogene Informationen zu konfigurieren Warteschlangennachricht empfangen und verarbeiten

    • Produktionsende

    1. Erstellen Sie das Producer-SpringBoot-Projekt (Maven)

    2. Geben Sie Start- und Abhängigkeitskoordinaten ein

    b4b38e33757a6497aa8690936b905cc1
                                                                                                                                                                          und schließen Sie den Nachrichtenversand ab



    Abhängigkeiten hinzufügen

    Ändern Sie den Inhalt der pom.xml-Datei wie folgt:

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

    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 konfigurieren

    Konfigurationsdatei

    Erstellen Sie application.yml mit dem folgenden Inhalt:

    Spring:

    Rabbitmq:

    Host: Localhost

    Port: 5672

    Virtual-Host: /itcast

    Benutzername: Heima

    Passwort: Heima

    Switch und Warteschlange binden


    RabbitMQ-Warteschlange und Switch-Bindungskonfigurationsklasse com.itheima.rabbitmq erstellen .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();
        }
    }

    Erstellen Sie ein Verbraucherprojekt

    Erstellen Sie ein Projekt

    Produktionsende

    1. Erstellen Sie ein Produzent-SpringBoot-Projekt

    2. Geben Sie Start- und Abhängigkeitskoordinaten ein

    org.springframework.boot

    spring-boot -starter-amqp

    Schreiben Sie die YML-Konfiguration und die grundlegende Informationskonfiguration.

    Konfigurationsklassen, die Schalter, Warteschlangen und Bindungsbeziehungen definieren lautet wie folgt:

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

    Startup-Klasse

    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 konfigurieren

    Anwendung.yml mit folgendem Inhalt erstellen:

    Spring:
    Rabbitmq:
    Host: Localhost

    Port: 5672

    Virtual-Host: /itcast

    Benutzer Name: heima

    Passwort: heima

    Message-Listening-Verarbeitungsklasse

    Nachrichten-Listener schreiben 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

    Erstellen Sie eine Testklasse im Produzentenprojekt springboot-rabbitmq-producer und senden Sie Nachrichten :

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

    Führen Sie zuerst das obige Testprogramm aus (Schalter und Warteschlangen können zuerst deklariert und gebunden werden) und starten Sie dann den Verbraucher. Überprüfen Sie, ob die entsprechende Nachricht auf der Konsole im Verbraucherprojekt springboot-rabbitmq-consumer empfangen wird.

    SpringBoot bietet eine Möglichkeit zur schnellen Integration von RabbitMQ

    Grundlegende Informationen werden in yml konfiguriert, Warteschlangeninteraktor und Bindungsbeziehung werden mithilfe von Beans in der Konfigurationsklasse konfiguriert

    Das Produktionsende injiziert RabbitTemplate direkt, um den Nachrichtenversand abzuschließen

    Verbraucherende direkt verwenden @RabbitListener, um den Nachrichtenempfang abzuschließen

    Das obige ist der detaillierte Inhalt vonMit welcher Methode integriert SpringBoot die Nachrichtenwarteschlange RabbitMQ?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen