理解Confirm消息确认机制:

  1. 消息的确认,是指生产者投递消息后,如果Broker收到消息,则会给我们生产者一个应答
  2. 生产者进行接收应答,用来确定这条消息是否正常的发送到Broker,这种方式也是消息的可靠性投递的核心保障!


    还是比较简单的,

生产者代码如下:

package com.bfxy.rabbitmq.api.confirm;import java.io.IOException;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.ConfirmListener;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;public class Producer {public static void main(String[] args) throws Exception {//1 创建ConnectionFactoryConnectionFactory connectionFactory = new ConnectionFactory();connectionFactory.setHost("localhost");
//      connectionFactory.setHost("192.168.43.223");connectionFactory.setPort(5672);connectionFactory.setVirtualHost("/");connectionFactory.setUsername("guest");connectionFactory.setPassword("guest");//2 获取C onnectionConnection connection = connectionFactory.newConnection();//3 通过Connection创建一个新的ChannelChannel channel = connection.createChannel();//4 指定我们的消息投递模式: 消息的确认模式 channel.confirmSelect();String exchangeName = "test_confirm_exchange";String routingKey = "confirm.save";//5 发送一条消息String msg = "Hello RabbitMQ Send confirm message!";channel.basicPublish(exchangeName, routingKey, null, msg.getBytes());//6 添加一个确认监听channel.addConfirmListener(new ConfirmListener() {@Overridepublic void handleNack(long deliveryTag, boolean multiple) throws IOException {System.err.println("-------no ack!-----------");}@Overridepublic void handleAck(long deliveryTag, boolean multiple) throws IOException {System.err.println("-------ack!-----------");}});  }
}

消费者代码如下:

package com.bfxy.rabbitmq.api.confirm;import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.QueueingConsumer.Delivery;public class Consumer {public static void main(String[] args) throws Exception {//1 创建ConnectionFactoryConnectionFactory connectionFactory = new ConnectionFactory();connectionFactory.setHost("localhost");
//      connectionFactory.setHost("192.168.43.223");connectionFactory.setPort(5672);connectionFactory.setVirtualHost("/");connectionFactory.setUsername("guest");connectionFactory.setPassword("guest");//2 获取C onnectionConnection connection = connectionFactory.newConnection();//3 通过Connection创建一个新的ChannelChannel channel = connection.createChannel();String exchangeName = "test_confirm_exchange";String routingKey = "confirm.#";String queueName = "test_confirm_queue";//4 声明交换机和队列 然后进行绑定设置, 最后制定路由Keychannel.exchangeDeclare(exchangeName, "topic", true);channel.queueDeclare(queueName, true, false, false, null);channel.queueBind(queueName, exchangeName, routingKey);//5 创建消费者 QueueingConsumer queueingConsumer = new QueueingConsumer(channel);channel.basicConsume(queueName, true, queueingConsumer);while(true){Delivery delivery = queueingConsumer.nextDelivery();String msg = new String(delivery.getBody());System.err.println("消费端: " + msg);}}
}


Rabbtmq Confirm 确认消息相关推荐

  1. 老的消息中间件投递失败的类型值_RabbitMQ消息中间件技术精讲11 高级篇四 confirm 确认消息...

    RabbitMQ消息中间件技术精讲11 高级篇四 confirm 确认消息 理解Confirm消息确认机制: 消息的确认,是指生产者投递消息后,如果broker收到消息,则会给生产者一个应答: 生产者 ...

  2. Net中使用 RabbitMq | Confirm确认消息

    RabbitMQ  消息确认机制 - 消费者确认 由于生产者和消费者不直接通信,生产者只负责把消息发送到队列,消费者只负责从队列获取消息(不管是push还是pull). 消息被"消费&quo ...

  3. javascript window.confirm确认 取消对话框实现代码小结

    本文章讲述的三种都是基于了javascript confirm提示确认框的做法了,只是在不同的地方写哦,有需要的同学可参考一下 confirm() 方法 confirm() 方法用于显示一个带有指定消 ...

  4. springboot 集成 RabbitMQ confirm 确认模式和 return 回退模式以及Consumer Ack模式

    springboot 集成 RabbitMQ confirm 确认模式和 return 回退模式以及Consumer Ack模式 说明: RabbitMQ消息的可靠投递 在使用 RabbitMQ 的时 ...

  5. elementui确认消息区分取消和关闭按钮

    默认情况下,elementui的确认消息,取消按钮和右上角弹窗,走的是同一个方法,也就是catch方法的回调,如果功能上需要做区分,就没法区分了. 所以,要解决这个问题,就需要在取消的回调方法里做一个 ...

  6. MessageBox 弹框 消息提示、确认消息

    type 消息类型,用于显示图标 success / info / warning / error 1.消息提示 this.$alert('这是一段内容', '标题名称', {confirmButto ...

  7. RabbitMQ:confirm确认模式

    confirm确认模式 0.概念 1.创建Maven项目 2.导入rabbitmq依赖 3.同步confirm 3.1 确认-同步-生产者Send 3.2 确认-同步-消费者Recv 3.3 缺点 4 ...

  8. RabbitMQ之事务以及Confirm确认模式

    spring:rabbitmq:port: 5672host: 127.0.0.1username: guestpassword: guest 事务 事务的实现主要是对信道(Channel)的设置,主 ...

  9. javascript confirm 确认、取消的选择

    用法: if (confirm("确认要删除这些记录么?")) { document.form1.action="commision.commisiondel.do&qu ...

最新文章

  1. myeclipse 6.0 弹出 Multiple Errors have Occurred 错误
  2. 工作空间从Windows转向fc8
  3. SCons命令 之 从入门到精通
  4. 跨平台的 NodeJS 组件解决 .NetCore 不支持 System.Drawing图形功能的若干问题
  5. Codeforces Round #131(Div. 2)
  6. 这个女生躲在衣柜等男友回家,结果竟是......
  7. linux服务器用哪个面板好,Linux服务器管理面板哪家比较好用?
  8. mysql itpub_mysql
  9. SysTick系统定时器(功能框图和优先级配置)
  10. 中国(2009-2017)全国各省结婚率和离婚率数据可视化
  11. mysql 1236错误_MySQL主从失败 错误Got fatal error 1236解决方法
  12. JavaWeb——RequestResponse笔记
  13. Excel表格插入斜线
  14. 水浴的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  15. 【网安神器篇】——Whatweb指纹识别工具
  16. lubcon turmogrease turmosynthgrease turmotemp
  17. node使用express+multer文件上传和下载的问题
  18. 微慕小程序开源美化版
  19. php html 锚点,html中怎么设置锚点定位?设置锚点定位方法汇总
  20. opencv幻灯片代码

热门文章

  1. element-ui表单校验
  2. java memorystream 包_存储在MemoryStream中的裁剪图像中心
  3. java getevent_Java ActionEvent.getWhen方法代码示例
  4. 多租户saas 架构_实战复盘:toB产品的多租户架构设计
  5. ubuntu16.04 离线安装docker ce
  6. ActiveMQ学习总结(5)——Java消息服务JMS详解
  7. 了解 JavaScript (5)– 翻转器(rollover)
  8. (转)B2B2C,从营销的角度,来理解SaaS
  9. sendmail for linux
  10. 数据库及中间件术语解释