RabbitMQ生产者消息确认Confirm模式,分为普通模式、批量模式和异步模式,本次举例为普通模式。
源码:
1 package org.study.confirm4; 2 3 import com.rabbitmq.client.Channel; 4 import com.rabbitmq.client.Connection; 5 import org.junit.Test; 6 import org.study.utils.ConnectionUtils; 7 8 import java.io.IOException; 9 import java.util.concurrent.TimeoutException;10 11 /**12 * 生产者消息确认(confirm)13 */14 public class Sender {15 public static final String QUEUE_NAME = "test_confirm_queue";16 17 @Test18 public void send() throws IOException, TimeoutException, InterruptedException {19 // 获取连接20 Connection conn = ConnectionUtils.getConnection();21 // 获取通道22 Channel channel = conn.createChannel();23 //创建队列24 channel.queueDeclare(QUEUE_NAME, false, false, false, null);25 //每个消费者发送确认消息前,只发送一条消息26 channel.basicQos(1);27 String msg = "hello rabbitmq!";28 29 //开启confirm模式30 channel.confirmSelect();31 32 //发送消息33 channel.basicPublish("", QUEUE_NAME, null, msg.getBytes());34 System.out.println("[send] msg " + msg);35 36 //判断消息返回是否成功37 if (channel.waitForConfirms()) {38 System.out.println("发送成功!");39 } else {40 System.out.println("发送失败!");41 }42 43 channel.close();44 conn.close();45 }46 }