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
Classe de démarrage1. 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 messageAjouter 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>
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); } }
hôte: localhost
port: 5672hôte virtuel: /itcastConstruire un projet consommateurCréer un projetFin de production1 Créer un projet SpringBoot producteur2. Introduire le démarrage, les coordonnées de dépendanceorg.springframework.boot spring-boot. -starter-amqpÉcrire la configuration yml, la configuration des informations de basenom 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.RabbitMQConfigpackage 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(); } }
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 messagesAjouter 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); } }
hôte: localhost
port: 5672hôte virtuel: /itcastTestCréer une classe de test dans le projet producteur springboot-rabbitmq-producer et envoyer des messages :utilisateur nom : heima
Mot de passe : heima
Classe de traitement d'écoute de messages
Écrire un écouteur de message com.itheima.rabbitmq.listener.MyListenerpackage 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); } }
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 RabbitMQLes 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 configurationLa fin de production injecte directement RabbitTemplate pour terminer l'envoi du messageLe 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!