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
und schließen Sie den Nachrichtenversand ab
Abhängigkeiten hinzufügen
Ändern Sie den Inhalt der pom.xml-Datei wie folgt:Startup-Klasse<?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 kopierenpackage 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
Switch und Warteschlange binden
RabbitMQ-Warteschlange und Switch-Bindungskonfigurationsklasse com.itheima.rabbitmq erstellen .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(); } }Nach dem Login kopieren
Erstellen Sie ein Verbraucherprojekt
Erstellen Sie ein Projekt
Produktionsende
2. Geben Sie Start- und Abhängigkeitskoordinaten ein
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>
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); } }
Spring:
Rabbitmq:
Host: Localhost
Passwort: heima
Message-Listening-VerarbeitungsklasseNachrichten-Listener schreiben 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); } }
Das Produktionsende injiziert RabbitTemplate direkt, um den Nachrichtenversand abzuschließenVerbraucherende direkt verwenden @RabbitListener, um den Nachrichtenempfang abzuschließenErstellen 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 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!