SpringBoot 통합 RabbitMQ 수 동 응답(간단 한 데모)
7111 단어 SpringBoot통합RabbitMQ
매개 변수의 의미
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
포트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 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.