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
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>Copier après la connexion
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(); } }Copier après la connexion
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>
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); } }Copier après la connexion
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"); } }
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!