Heim > Java > javaLernprogramm > Hauptteil

Mit welcher Methode integriert SpringBoot die Nachrichtenwarteschlange RabbitMQ?

PHPz
Freigeben: 2023-05-16 17:25:06
nach vorne
1283 Leute haben es durchsucht

    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

                                                                                                                                                                          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>
    Nach dem Login kopieren

    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);
        }
    }
    Nach dem Login kopieren

    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();
        }
    }
    Nach dem Login kopieren

    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>
    Nach dem Login kopieren

    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);
        }
    }
    Nach dem Login kopieren

    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);
        }
    }
    Nach dem Login kopieren

    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");
        }
    }
    Nach dem Login kopieren

    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!

    Verwandte Etiketten:
    Quelle:yisu.com
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage