SpringBoot 통합 RabbitMQ 수 동 응답(간단 한 데모)

버 전 설명
  • JDK 1.8
  • RabbitMQ 3.7.15 Erlang 22.0
  • SpringBoot 2.3.3.RELEASE
  • //TODO 2021 년 1 월 8 일 CentOS 설치 RabbitMQ 절차 정리
  • 1.RabbitMQ 의 웹 관리 인터페이스 에서 test 대기 열 만 들 기

    매개 변수의 의미
    durability:지속 여부(재 부팅 또는 지연 후 메시지 저장)
    내구성 지속transient 일시새 maven 프로젝트.
    2. 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.3.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
      </parent>
    
      <groupId>com.demo</groupId>
      <artifactId>rabbitmq-demo</artifactId>
      <version>1.0.0</version>
    
      <properties>
        <lombok.version>1.18.12</lombok.version>
      </properties>
    
      <dependencies>
        <!--web   -->
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    
    		<!-- AMQP -->
        <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
    
        <!-- lombok-->
        <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <optional>true</optional>
          <scope>provided</scope>
          <version>${lombok.version}</version>
        </dependency>
      </dependencies>
    
      <build>
        <plugins>
          <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
          </plugin>
        </plugins>
      </build>
    </project>
    3. application.yaml
    
    server:
     port: 20002
    spring:
     rabbitmq:
     	#         hosts,     192.168.0.121
      host: vm.com
      port: 5672
      virtual-host: /
      username: admin
      password: admin
      #         
      #             ,      
      # publisher-confirms: true
      #       
      publisher-returns: true
      template:
       #  mandatory: true, basic.return           
       mandatory: true
      listener:
       simple:
       	#     
        acknowledge-mode: manual
        #        
        concurrency: 1 
        #        
        max-concurrency: 10
        #     
        retry:
         enabled: true 
    포트
  • 5672:RabbitMQ 의 통신 포트
  • 15672:웹 관리 인터페이스 포트
    4. RabbitmqDemo.java
    
    @SpringBootApplication
    @EnableRabbit
    public class RabbitmqDemoApplication {
      
      public static void main(String[] args) {
        SpringApplication.run(RabbitmqDemoApplication.class, args);
      }
    }
    5. RabbitConfig.java
    
    @Configuration
    @Slf4j
    public class RabbitConfig {
    
      private RabbitTemplate rabbitTemplate;
    
      @Bean
      public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
        rabbitTemplate = new RabbitTemplate(connectionFactory);
        return rabbitTemplate;
      }
    
    }
    RabbitMQ 메시지 템 플 릿 을 설정 합 니 다.
    6.메시지 생산자 produce.java
    
    @Component
    public class Producer {
      
      // @Qualifier("rabbitTemplate")
      @Autowired
      private RabbitTemplate rabbitTemplate;
    
      public void send() {
        for (int i = 0; i < 5; i++) {
          System.out.println("       ,   : " + i);
          rabbitTemplate.convertAndSend("test", String.valueOf(i));
        }
      }
    }
    메시지 전송 템 플 릿 RabbitTemplate 를 초기 화 합 니 다.@Qualifier 주 해 는 구체 적 인 구현 클래스 를 제한 하 는 데 사 용 됩 니 다.여 기 는 지정 하지 않 아 도 됩 니 다.
    7.소식 소비자 consumer.java
    소비자 1 과 소비자 2 모두 테스트 대기 열 을 감청 한다.
    다른 것 은 소비자 1 이 메 시 지 를 받 고 돌아 와 확인 응답 basic Ack.
    한편,소비자 2 는 메 시 지 를 받 은 후 basic Regect 에 응답 하지 않 고 소비자 에 게 거부 당 한 후 다시 test 대기 열 로 돌아 가 다음 에 소비자 에 게 보 낼 때 까지 기 다 렸 다.
    
    @Component
    @Slf4j
    public class Consumer {
    
      /**
       *    1            ,            
       * @param message
       * @param channel
       * @throws IOException
       */
      @RabbitListener(queues = "test")
      public void process1(Message message, Channel channel) throws IOException {
        log.info("   1     : " + new String(message.getBody()));
        log.info("   1       :" + new String(message.getBody()));
        channel.basicAck(message.getMessageProperties().getDeliveryTag(), true);
      }
    
      /**
       *    2            ,   2 rabbitmq      。
       *              ready ,        ,        
       * @param message
       * @param channel
       * @throws IOException
       */
      @RabbitListener(queues = "test")
      public void process2(Message message, Channel channel) throws IOException {
        log.info("   2     :" + new String(message.getBody()));
        log.info("   2       :" + new String(message.getBody()));
        channel.basicReject(message.getMessageProperties().getDeliveryTag(), true);
      }
    }
    8.테스트 RabbitMqController.java
    
    @RestController
    @RequestMapping("")
    public class RabbitMqController {
    
      @Autowired
      private Producer producer;
    
      @GetMapping("/send")
      public String send() {
        producer.send();
        return "    ";
      }
    }
    9.테스트
    post man 또는 브 라 우 저 사용 Get 방법 요청http://localhost:20001/send,생산 자 는 RabbitMQ 의 test 대기 열 에 5 가지 메 시 지 를 보 냅 니 다.
    생산자 가 메 시 지 를 보 내 는데 번 호 는 0 이다.
    생산자 가 메 시 지 를 보 내 는데 번 호 는 다음 과 같다.
    생산자 가 메 시 지 를 보 내 는데 번 호 는 2 이다.
    생산자 가 메 시 지 를 보 내 는데 번 호 는 3 이다.
    생산자 가 메 시 지 를 보 내 는데 번 호 는 4 이다.

    번호 가 2 인 것 을 알 수 있 는 소식 은 3 차례 소비자 2 에 접 수 됐 고,소비자 2 도 3 차례 거부 응답 을 보 내 4 번 째 에 야 소비자 1 에 게 접 수 돼 확인 응답 으로 되 돌아 갔다.
    SpringBoot 통합 RabbitMQ 수 동 응답 간단 한 demo 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 SpringBoot 통합 RabbitMQ 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기