之前我们确定一个消息是否发送成功是从消费者是否接收到来判断的,但是在实际应用中,消费者和生产者往往是分开部署的,我们也不可能每发送一条消息就去消费者那里确认一下,所有我们需要一个机制来确认消息发送后是否成功到达了消息队列,下面来介绍几种在生产者端来确认消息发送状态的方法。
事务模式类似与数据库中所讲的事务。也是分为三个步骤:开启事务,提交事务,回滚事务。
生产者
package com.mmr.rabbitmq.tx;
import com.mmr.rabbitmq.util.ConnectionUtils;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
public class Send {
private static final String QUEUE_NAME="QUEUE_TX";//定义队列名
public static void main(String[] args) throws Exception
{
Connection connection = ConnectionUtils.getConnection();
Channel channel = connection.createChannel();//获取一个信道
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
try
{
channel.txSelect(); //开启事务
String msg="Hello Simple QUEUE !";
channel.basicPublish("", QUEUE_NAME,