Spring 프로젝트에서는 Spring-Rabbit을 사용하여 RabbitMQ를 운영할 수 있습니다.
특히 Spring Boot 프로젝트에서는 해당 amqp 스타터 종속성을 도입하기만 하면 RabbitTemplate을 사용하여 전송하는 것이 편리합니다. 메시지를 사용합니다.
일반적으로 개발 프로세스 중:
Producer 프로젝트:
application.yml 파일을 사용하여 RabbitMQ 관련 정보를 구성합니다.
프로듀서 프로젝트에 구성 클래스를 작성하여 스위치와 대기열을 생성하고 바인딩합니다.
RabbitTemplate 개체를 삽입하고 RabbitTemplate 개체를 통해 스위치에 메시지를 보냅니다.
소비자 공학:
application.yml 파일을 사용하여 RabbitMQ 관련 정보를 구성합니다.
에서 사용할 메시지 처리 클래스를 만듭니다. 큐 메시지 수신 및 처리
Startup class1. 생성자 SpringBoot 프로젝트 생성(maven)
2. 시작 및 종속성 좌표 소개
5d2ae825d96e6b79836fc3ca23d94234
gt ;
~ RabbitTemplate을 삽입하고 메소드를 호출합니다.종속성 추가
다음과 같이 pom.xml 파일 콘텐츠를 수정합니다.<?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); } }
호스트: localhost
포트: 5672가상 호스트: /itcast소비자 프로젝트 빌드프로젝트 만들기생산 종료1. 생산자 SpringBoot 프로젝트 만들기2 시작, 종속성 좌표 소개org.springframework.boot spring-boot -starter-amqpyml 구성, 기본 정보 구성 작성사용자 이름: heima
비밀번호: heima
Bind 스위치 및 대기열
RabbitMQ 대기열 생성 및 스위치 바인딩 구성 클래스 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(); } }
스위치, 대기열 및 바인딩 관계를 정의하는 구성 클래스
RabbitTemplate 삽입, 호출 메서드 및 메시지 전송 완료종속성 추가
pom.xml 수정 파일 내용
<?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>Startup class
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); } }
호스트: localhost
포트: 5672virtual-host: /itcastTest프로듀서 프로젝트 springboot-rabbitmq-producer에서 테스트 클래스를 생성하고 메시지 보내기 :user 이름 : heima
비밀번호 : heima
메시지 청취 처리 클래스
Write 메시지 리스너 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"); } }먼저 위의 테스트 프로그램을 실행한 다음(스위치와 큐를 먼저 선언하고 바인딩할 수 있음) 소비자를 시작하고 소비자 프로젝트 springboot-rabbitmq-consumer의 콘솔에 해당 메시지가 수신되는지 확인하세요. SpringBoot는 RabbitMQ를 빠르게 통합할 수 있는 방법을 제공합니다기본 정보는 yml에서 구성하고, 대기열 상호작용자와 바인딩 관계는 구성 클래스의 Bean을 사용하여 구성합니다.생산측에서는 RabbitTemplate을 직접 주입하여 메시지 전송을 완료합니다.소비자 측에서 직접 사용합니다. 메시지 수신을 완료하는 @RabbitListener
위 내용은 SpringBoot는 메시지 대기열 RabbitMQ를 어떻게 통합합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!