spring boot 整合rabbitmq 使用 RabbitTemplate 實現 ACK 消息確認 最簡單實現

application.yml 配置 無需在yml 文件中配置 ack 等 屬性

spring:
  rabbitmq:
            host: 127.0.0.1
            port: 5672
            username: guest
            password: guest
複製代碼

初始化一個 rabbitmq 的配置組件

@Component
public class RabbitConfig {
}
複製代碼

配置消費者的 SimpleRabbitListenerContainerFactory

@Bean(name = "listenerContainer")
public SimpleRabbitListenerContainerFactory listenerContainer(){
   SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
 	// 手動確認模式
   factory.setAcknowledgeMode(AcknowledgeMode.MANUAL);
   //todo .... 
   return factory;
}
複製代碼

配置消費者監聽組件

@Component
public class RabbitListener{
}
複製代碼

消費者監聽配置

@RabbitListener(queues = "隊列名稱" ,containerFactory = "listenerContainer")
@RabbitHandler
public void ConsumeMessage(Channel channel, Message message) {
   try {
   		//確認收到消息 
       channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
   } catch (Exception e) {
   	//.... 能夠丟棄消息或重入隊列
   }
}
複製代碼

生產者無需處理是否確認消息

相關文章
相關標籤/搜索