Springboot가 RabbitMQ 메시지 대기열을 통합하는 방법
Producer Project
POM 종속성
프로젝트를 생성할 때 종속성을 직접 추가하도록 선택할 수 있습니다.
응용 파일
rabbitmq에는 기본 주소와 사용자 정보가 있기 때문에 로컬 Rabbitmq라면 따로 설정할 필요가 없습니다.
RabbitMQ 구성 파일:
관련 스위치 및 큐를 사용할 때 해당 스위치 및 큐를 선언해야 합니다. 해당 정보가 없으면 시작 프로젝트가 실패합니다. 따라서 springboot를 사용하여 Rabbitmq를 통합할 때 구성 파일을 사용하여 스위치와 대기열을 선언하고 둘 사이의 관계를 바인딩할 수 있습니다. Fanout 모드는 현재 시연 중이므로 FanoutExchange를 사용하여 스위치를 선언하고, 다른 모드에서는 해당 TopicExchange 및 DirectExchange를 사용하여 선언합니다.
@Configuration public class RabbitMQConfiguration { //声明fanout模式的交换机 @Bean public FanoutExchange fanoutExchange() { return new FanoutExchange("fanout_order_exchange", true, false); } //声明队列 @Bean public Queue smsQueue() { return new Queue("sms.fanout.queue", true); } @Bean public Queue emailQueue() { return new Queue("email.fanout.queue", true); } @Bean public Queue duanxinQueue() { return new Queue("duanxin.fanout.queue", true); } //绑定 @Bean public Binding smsBinding() { return BindingBuilder.bind(smsQueue()).to(fanoutExchange()); } @Bean public Binding emailBinding() { return BindingBuilder.bind(emailQueue()).to(fanoutExchange()); } @Bean public Binding duanxinBinding() { return BindingBuilder.bind(duanxinQueue()).to(fanoutExchange()); } }
Producer 비즈니스 코드
코드의 이 부분은 단순히 RabbitTemplate을 호출하여 메시지를 배포합니다. @Service public class OrderService {
@Autowired private RabbitTemplate rabbitTemplate; public void makeOrder() { // 保存订单 String orderId = UUID.randomUUID().toString(); System.out.println("下单成功:" + orderId); // 通过MQ完成消息的分发 // 参数1:交换机 ;参数2:路由key/队列名;参数3:消息内容 String exchangeName = "fanout_order_exchange"; rabbitTemplate.convertAndSend(exchangeName, "", orderId); } }
Consumer:
소비자 엔지니어링은 생산자 엔지니어링과 유사합니다. 먼저 종속성을 도입한 다음 애플리케이션 파일에 관련 구성을 만들어 코드 작성을 시작해야 합니다. 소비자 프로젝트에서는 Rabbitmq 구성 파일을 작성하여 스위치와 대기열을 선언할 수도 있습니다. 컨슈머 측에서 구성 파일을 작성하는 것이 좋습니다. 왜냐하면 컨슈머 측이 가장 먼저 시작하는 프로젝트이기 때문입니다. 스위치와 큐가 생성되지 않으면 프로젝트 시작이 실패합니다. 메시지 수신
RabbitListener 주석을 통해 메시지 대기열을 수신합니다. 컴포넌트 주석을 통해 스프링 관리에 모니터링을 넘겨야 한다는 점에 유의해야 합니다. 그렇지 않으면 서버로부터 메시지를 정상적으로 수신할 수 없습니다. 여기서는 하나의 이메일 메시지 모니터링만 제공됩니다. 위의 생산자가 선언한 duanxin 및 SMS 대기열은 대기열 이름만 수정하면 됩니다. @Service public class OrderService {
@RabbitListener(queues = {"email.fanout.queue"}) @Component public class FanoutEmailService { @RabbitHandler public void receive(String message) { System.out.println("email fanout -----》接收到" + message); } }
Test
먼저 소비자 프로젝트를 시작한 후 생산자 프로젝트에 테스트 클래스를 생성하여 메시지를 보냅니다.
@SpringBootTest class SpringbootOrderRabbitmqProducerApplicationTests { @Autowired private OrderService orderService; @Test void contextLoads() { orderService.makeOrder(); } }
메시지를 보낸 후 콘솔에서 소비자가 메시지를 성공적으로 수락했음을 확인할 수 있습니다.
다이렉트 모드
Producer
프로젝트를 생성하는 단계는 위와 동일합니다.
구성 파일
구성은 기본적으로 위와 동일합니다. 이 부분은 직접 모드를 테스트하기 때문에 스위치를 생성하려면 DirectExchange를 사용해야 합니다. 이 클래스의 메소드 이름은 위의 Rabbitmq 구성 파일에 있는 메소드 이름과 동일할 수 없다는 점에 유의해야 합니다. 왜냐하면 이름이 동일하면 프로젝트 시작이 Bean 주석을 사용하여 전달되기 때문입니다. 실패하다.
@Configuration public class DirectRabbitMQConfiguration { //声明direct模式的交换机 @Bean public DirectExchange directExchange() { return new DirectExchange("direct_order_exchange", true, false); } //声明队列 @Bean public Queue smsDirectQueue() { return new Queue("sms.direct.queue", true); } @Bean public Queue emailDirectQueue() { return new Queue("email.direct.queue", true); } @Bean public Queue duanxinDirectQueue() { return new Queue("duanxin.direct.queue", true); } //绑定 @Bean public Binding smsDirectBinding() { return BindingBuilder.bind(smsDirectQueue()).to(directExchange()).with("sms"); } @Bean public Binding emailDirectBinding() { return BindingBuilder.bind(emailDirectQueue()).to(directExchange()).with("email"); } @Bean public Binding duanxinDirectBinding() { return BindingBuilder.bind(duanxinDirectQueue()).to(directExchange()).with("duanxin"); } }
비즈니스 코드
@Service public class OrderService { @Autowired private RabbitTemplate rabbitTemplate; public void makeOrderDirect() { // 保存订单 String orderId = UUID.randomUUID().toString(); System.out.println("下单成功:" + orderId); String exchangeName = "direct_order_exchange"; rabbitTemplate.convertAndSend(exchangeName, "sms", orderId); rabbitTemplate.convertAndSend(exchangeName, "email", orderId); } }
Consumer
메시지 모니터링
위와 동일합니다. 대기열 이름만 주의하세요.
@RabbitListener(queues = {"email.direct.queue"}) @Component public class DirectEmailService { @RabbitHandler public void receive(String message) { System.out.println("email direct -----》接收到" + message); } }
Topic 모드
위 모드는 모두 구성 파일을 통해 스위치, 대기열 및 바인딩 간의 관계를 선언합니다. 실제로 주석을 통해 스위치와 주석을 선언할 수도 있습니다.
Producer
Annotation을 이용하여 선언하기 때문에 설정 파일을 생성할 필요 없이 비즈니스 코드를 직접 작성할 수 있습니다. 테스트할 때 경로 이름만 수정하면 됩니다. 수정 방법에 대한 자세한 내용은 기사 시작 부분의 링크로 이동하여 각 모드의 사용 방법을 확인하세요.
@Service public class OrderService { @Autowired private RabbitTemplate rabbitTemplate; public void makeOrderTopic() { // 保存订单 String orderId = UUID.randomUUID().toString(); System.out.println("下单成功:" + orderId); String exchangeName = "topic_order_exchange"; String routingKey = "com.email"; rabbitTemplate.convertAndSend(exchangeName, routingKey, orderId); } }
Consumer
코드는 기본적으로 위와 동일합니다. 차이점은 큐를 직접 바인딩하고 RabbitListener 주석에서 전환한다는 것입니다. 각 매개변수에는 문자열이 사용된다는 점에 유의해야 합니다. 값은 큐에 해당하며 해당 매개변수는 큐 이름, 지속성 및 자동 삭제입니다. 교환에 해당하는 스위치의 경우 해당 매개변수는 스위치 이름과 스위치 유형입니다. 키는 경로 이름에 해당합니다.
아아아아위 내용은 Springboot가 RabbitMQ 메시지 대기열을 통합하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











RabbitMQ를 사용하여 PHP에서 분산 메시지 처리를 구현하는 방법 소개: 대규모 애플리케이션 개발에서 분산 시스템은 일반적인 요구 사항이 되었습니다. 분산 메시지 처리는 작업을 여러 처리 노드에 분산하여 시스템의 효율성과 안정성을 향상시키는 패턴입니다. RabbitMQ는 AMQP 프로토콜을 사용하여 메시지 전달 및 처리를 구현하는 신뢰할 수 있는 오픈 소스 메시지 대기열 시스템입니다. 이 기사에서는 배포를 위해 PHP에서 RabbitMQ를 사용하는 방법을 다룹니다.

React 및 RabbitMQ를 사용하여 안정적인 메시징 애플리케이션을 구축하는 방법 소개: 최신 애플리케이션은 실시간 업데이트 및 데이터 동기화와 같은 기능을 달성하기 위해 안정적인 메시징을 지원해야 합니다. React는 사용자 인터페이스 구축을 위한 인기 있는 JavaScript 라이브러리인 반면 RabbitMQ는 안정적인 메시징 미들웨어입니다. 이 기사에서는 React와 RabbitMQ를 결합하여 안정적인 메시징 애플리케이션을 구축하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. RabbitMQ 개요:

SpringBoot와 SpringMVC는 모두 Java 개발에서 일반적으로 사용되는 프레임워크이지만 둘 사이에는 몇 가지 분명한 차이점이 있습니다. 이 기사에서는 이 두 프레임워크의 기능과 용도를 살펴보고 차이점을 비교할 것입니다. 먼저 SpringBoot에 대해 알아봅시다. SpringBoot는 Spring 프레임워크를 기반으로 하는 애플리케이션의 생성 및 배포를 단순화하기 위해 Pivotal 팀에서 개발되었습니다. 독립 실행형 실행 파일을 구축하는 빠르고 가벼운 방법을 제공합니다.

최신 애플리케이션의 복잡성이 증가함에 따라 메시징은 강력한 도구가 되었습니다. 이 분야에서 RabbitMQ는 다양한 애플리케이션 간에 메시지를 전달하는 데 사용할 수 있는 매우 인기 있는 메시지 브로커가 되었습니다. 이 기사에서는 Go 언어에서 RabbitMQ를 사용하는 방법을 살펴보겠습니다. 이 가이드에서는 다음 내용을 다룹니다. RabbitMQ 소개 RabbitMQ 설치 RabbitMQ 기본 개념 Go에서 RabbitMQ 시작하기 RabbitMQ 및 Go

이 글에서는 dubbo+nacos+Spring Boot의 실제 개발에 대해 이야기하기 위해 자세한 예제를 작성하겠습니다. 이 기사에서는 이론적 지식을 너무 많이 다루지는 않지만 dubbo를 nacos와 통합하여 개발 환경을 신속하게 구축하는 방법을 설명하는 가장 간단한 예를 작성합니다.

이제 점점 더 많은 회사들이 마이크로서비스 아키텍처 모델을 채택하기 시작하고 있으며 이 아키텍처에서 메시지 큐는 중요한 통신 방법이 되었으며 그 중 RabbitMQ가 널리 사용됩니다. Go 언어에서 go-zero는 최근 몇 년 동안 등장한 프레임워크로, 개발자가 메시지 대기열을 보다 쉽게 사용할 수 있도록 다양한 실용적인 도구와 방법을 제공합니다. 아래에서는 실제 응용 프로그램을 기반으로 한 go-zero를 소개합니다. RabbitMQ의 응용실습. 1.RabbitMQ 개요Rabbit

Golang과 RabbitMQ 간의 실시간 데이터 동기화 솔루션 소개: 오늘날 인터넷의 대중화와 데이터 양의 폭발적인 증가로 인해 실시간 데이터 동기화가 점점 더 중요해지고 있습니다. 비동기 데이터 전송 및 데이터 동기화 문제를 해결하기 위해 많은 회사에서는 메시지 대기열을 사용하여 데이터의 실시간 동기화를 달성하기 시작했습니다. 이 글에서는 Golang과 RabbitMQ를 기반으로 한 실시간 데이터 동기화 솔루션을 소개하고 구체적인 코드 예시를 제공합니다. 1. RabbitMQ란 무엇인가요? 랍비

GolangRabbitMQ: 고가용성 메시지 대기열 시스템의 아키텍처 설계 및 구현에는 특정 코드 예제가 필요합니다. 소개: 인터넷 기술의 지속적인 발전과 광범위한 응용으로 인해 메시지 대기열은 현대 소프트웨어 시스템에서 없어서는 안될 부분이 되었습니다. 분리, 비동기 통신, 내결함성 처리 및 기타 기능을 구현하는 도구로서 메시지 큐는 분산 시스템에 대한 고가용성 및 확장성 지원을 제공합니다. 효율적이고 간결한 프로그래밍 언어인 Golang은 높은 동시성 및 고성능 시스템을 구축하는 데 널리 사용됩니다.
