Maison  >  Article  >  Java  >  Quelle est la méthode utilisée par SpringBoot pour intégrer la file d'attente de messages RabbitMQ ?

Quelle est la méthode utilisée par SpringBoot pour intégrer la file d'attente de messages RabbitMQ ?

PHPz
PHPzavant
2023-05-16 17:25:061279parcourir

    Introduction

    Dans le projet Spring, vous pouvez utiliser Spring-Rabbit pour faire fonctionner RabbitMQ

    Surtout dans le projet Spring Boot, il vous suffit d'introduire la dépendance de démarrage amqp correspondante. Il est pratique d'utiliser RabbitTemplate pour envoyer. messages. Utiliser Annotation reçoit des messages.

    Généralement pendant le processus de développement :

    Projet Producer :

    • Fichier application.yml pour configurer les informations relatives à RabbitMQ

    • Écrire des classes de configuration dans le projet producteur pour créer des commutateurs et des files d'attente, et les lier Définir

    • pour injecter l'objet RabbitTemplate et envoyer des messages au commutateur via l'objet RabbitTemplate

    Ingénierie du consommateur :

    • fichier application.yml pour configurer les informations relatives à RabbitMQ

    • Créer une classe de traitement de messages à utiliser dans le recevoir le message de la file d'attente et le traiter

    Fin de la production

    1. Créer le projet SpringBoot producteur (maven)
    2 Introduire les coordonnées de démarrage et de dépendance
    b4b38e33757a6497aa8690936b905cc1
    gt ;
                                                                                                                                                                        . Injectez RabbitTemplate, appelez la méthode, et complétez l'envoi du message

    Ajouter des dépendances

    Modifiez le contenu du fichier pom.xml comme suit :

    <?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>
    Classe de démarrage

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

    Configurer RabbitMQ

    Fichier de configuration

    Créez application.yml avec le contenu suivant :

    spring:

    Rabbitmq:

    hôte: localhost

    port: 5672
    hôte virtuel: /itcast

    nom d'utilisateur: heima
    mot de passe: heima


    Lier le commutateur et la file d'attente

    Créer une file d'attente RabbitMQ et une liaison de commutateur Classe de configuration 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();
        }
    }
    Construire un projet consommateur

    Créer un projet

    Fin de production

    1 Créer un projet SpringBoot producteur

    2. Introduire le démarrage, les coordonnées de dépendance

    org.springframework.boot

    spring-boot. -starter-amqp

    Écrire la configuration yml, la configuration des informations de base

    Classes de configuration qui définissent les commutateurs, les files d'attente et les relations de liaison

    Injecter RabbitTemplate, appeler les méthodes et terminer l'envoi des messages

    Ajouter des dépendances


    Modifier pom.xml Le contenu du fichier est la suivante :

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

    Classe de démarrage

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

    Configurer RabbitMQ

    Créer une application.yml avec le contenu suivant :

    spring:

    Rabbitmq:

    hôte: localhost

    port: 5672
    hôte virtuel: /itcast

    utilisateur nom : heima
    Mot de passe : heima


    Classe de traitement d'écoute de messages

    Écrire un écouteur de message 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

    Créer une classe de test dans le projet producteur springboot-rabbitmq-producer et envoyer des messages :

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

    Exécutez d'abord le programme de test ci-dessus (les commutateurs et les files d'attente peuvent être déclarés et liés en premier), puis démarrez le consommateur ; vérifiez si le message correspondant est reçu sur la console dans le projet consommateur springboot-rabbitmq-consumer.

    SpringBoot fournit un moyen d'intégrer rapidement RabbitMQ

    Les informations de base sont configurées dans yml, l'interacteur de file d'attente et la relation de liaison sont configurés à l'aide de beans dans la classe de configuration

    La fin de production injecte directement RabbitTemplate pour terminer l'envoi du message

    Le consommateur utilise directement @RabbitListener pour terminer la réception du message

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer