이 기사는 주로 기본 통합에 대해 이야기합니다. 코드를 먼저 시작한 다음 고급 기능에 대해 이야기하겠습니다.
Rabbitmq의 일부 용어
RabbitMQ 웹 콘솔을 열면 Exhanges 중 하나가 이해하기 어렵다는 것을 알게 될 것입니다. 아래에서 간단히 설명하겠습니다.
교환
스위치는 라우터와 같습니다. 먼저 스위치로 메시지를 보내고 스위치는 라우팅 키에 따라 해당 큐에 메시지를 전달합니다. (이 개념을 이해하는 것이 중요하며, 이는 후속 코드에 완전히 반영됩니다).
대기줄
대기열은 이해하기 쉽기 때문에 설명 할 필요가 없습니다.
제본
스위치는이 메시지를 전달할 대기열을 어떻게 알 수 있습니까? 이것은 바인딩이 필요합니다. 아마도 : 라우팅 키를 사용하여 큐를 특정 교환에 바인딩하여 스위치가 라우팅 키에 따라 메시지를 전달할 큐를 알 수 있도록합니다. (이것은 후속 코드에 완전히 반영됩니다)
Rabbitmq Maven 종속성에 가입하십시오
<pectionency> <groupId> org.springframework.boot </groupid> <artifactid> 스프링 부트 스타터-amqp </artifactid> </fectionency>
다른 종속성 추가 (이 종속성을 생략 할 수 있으며 주로 코드를 단순화하는 데 사용됩니다).
<pectionency> <groupid> cn.hutool </groupid> <artifactid> hutool-all </artifactid> <bersion> 4.0.2 </version> </fectionency>
Rabbitmqconfig.java 구성
@ConfigurationPublic 클래스 RabbitMqConfig {공개 최종 정적 문자열 queue_name = "Spring-Boot-Queue"; 공개 최종 정적 문자열 Exchange_name = "Spring-Boot-Exchange"; 공개 최종 정적 문자열 Routing_key = "Spring-Boot-Key"; // 큐 생성 @Bean public queue queue () {return new queue (queue_name); } // 주제 유형 생성 exchange @bean public topicexchange exchange () {return new topicexchange (exchange_name); } // 라우팅 키 (라우팅 키)를 사용하여 큐를 바인딩합니다 (큐 큐, TopicexChange exchange) {return bindingBuilder.bind (queue) .to (exchange) .with (drouning_key); } @Bean public connectionFactory ConnectionFactory () {CachingConnectionFactory ConnectionFactory = 새로운 CachingConnectionFactory ( "127.0.0.1", 5672); ConnectionFactory.setUserName ( "Guest"); ConnectionFactory.setPassword ( "Guest"); Return ConnectionFactory; } @Bean public RabbitTemplate RabbitTemplate (ConnectionFactory ConnectionFactory) {return new RabbitTemplate (ConnectionFactory); }}생산자
RabbittemPlate의 ConvertAndSend 메소드를 직접 호출하십시오. 또한 다음 코드에서 메시지를 큐로 직접 보내지 않지만 먼저 스위치로 보내면 스위치는 라우팅 키에 따라 해당 큐에 메시지를 전달합니다.
@RestControllerPublic Class ProduceRController {@autowired private labbittemplate Rabbittemplate; @GetMapping ( "/sendMessage") public Object SendMessage () {new Thread (()-> {for (int i = 0; i <100; i ++) {string value = new DateTime (). ToString ( "yyyy-mm-dd hh : mm : ss"); console.log ( "send {}", value); RabbitTemplate.convertAndsend (RabbitMqConfig.exchange_name, rabbitmqconfig.routing_key, value); start (); "OK"를 반환합니다. }}소비자
소비자에게도 매우 간단합니다. @RabBitListener 주석을 해당 방법에 추가하고 청취 할 대기열의 이름을 지정하면됩니다.
@ComponentPublic Class Consumer {@RabbitListener (queues = rabbitmqconfig.queue_name) public void sopcompitionmessage (문자열 메시지) {console.log ( "copume message {}", message); }}프로젝트를 실행하십시오
프로젝트를 실행 한 다음 브라우저를 열고 http://localhost:9999/sendMessage 입력하십시오. 콘솔에서 생산자가 지속적으로 메시지를 보내고 소비자가 지속적으로 메시지를 소비하는 것을 볼 수 있습니다.
RabbitMQ 웹 콘솔을 열면 현재 코드에서 구성한 스위치 및 대기열과 바인딩 정보를 볼 수 있습니다.
교환 세부 사항을 입력하려면 클릭하십시오
결론
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.