以下是Spring Boot整合RabbitMQ之Confirm和Return机制的完整攻略,包含两个示例说明。
示例1:Confirm机制
步骤1:添加依赖
在pom.xml文件中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
步骤2:配置文件
在application.properties文件中添加以下配置:
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
步骤3:发送消息
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.rabbit.support.CorrelationData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Producer implements CommandLineRunner, RabbitTemplate.ConfirmCallback {
@Autowired
private RabbitTemplate rabbitTemplate;
public static void main(String[] args) {
SpringApplication.run(Producer.class, args);
}
@Override
public void run(String... args) throws Exception {
rabbitTemplate.setConfirmCallback(this);
String message = "Hello World!";
CorrelationData correlationData = new CorrelationData("1");
rabbitTemplate.convertAndSend("my_exchange", "my_routing_key", message, correlationData);
System.out.println("Message sent: " + message);
}
@Override
public void confirm(CorrelationData correlationData, boolean ack, String cause) {
if (ack) {
System.out.println("Message confirmed: " + correlationData.getId());
} else {
System.out.println("Message failed: " + cause);
}
}
}
步骤4:运行程序
运行发送消息的程序后,您将看到以下输出:
Message sent: Hello World!
Message confirmed: 1
步骤5:确认消息
在发送消息后,您可以在RabbitMQ管理界面中确认消息是否已经被消费者消费。
示例2:Return机制
步骤1:添加依赖
同示例1。
步骤2:配置文件
同示例1。
步骤3:发送消息
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.rabbit.support.CorrelationData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Producer implements CommandLineRunner, RabbitTemplate.ReturnCallback {
@Autowired
private RabbitTemplate rabbitTemplate;
public static void main(String[] args) {
SpringApplication.run(Producer.class, args);
}
@Override
public void run(String... args) throws Exception {
rabbitTemplate.setReturnCallback(this);
String message = "Hello World!";
CorrelationData correlationData = new CorrelationData("1");
rabbitTemplate.convertAndSend("my_exchange", "my_routing_key", message, correlationData);
System.out.println("Message sent: " + message);
}
@Override
public void returnedMessage(Message message, int replyCode, String replyText, String exchange, String routingKey) {
System.out.println("Message returned: " + message.getBody());
}
}
步骤4:运行程序
运行发送消息的程序后,您将看到以下输出:
Message sent: Hello World!
Message returned: Hello World!
步骤5:处理返回的消息
在发送消息后,如果消息无法路由到任何队列,则会返回到生产者。在这种情况下,您可以在返回回调方法中处理返回的消息。
以上就是Spring Boot整合RabbitMQ之Confirm和Return机制的完整攻略,包含两个示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Springboot整合Rabbitmq之Confirm和Return机制 - Python技术站