Rabbtmq Confirm 确认消息
理解Confirm消息确认机制:
- 消息的确认,是指生产者投递消息后,如果Broker收到消息,则会给我们生产者一个应答
- 生产者进行接收应答,用来确定这条消息是否正常的发送到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 确认消息相关推荐
- 老的消息中间件投递失败的类型值_RabbitMQ消息中间件技术精讲11 高级篇四 confirm 确认消息...
RabbitMQ消息中间件技术精讲11 高级篇四 confirm 确认消息 理解Confirm消息确认机制: 消息的确认,是指生产者投递消息后,如果broker收到消息,则会给生产者一个应答: 生产者 ...
- Net中使用 RabbitMq | Confirm确认消息
RabbitMQ 消息确认机制 - 消费者确认 由于生产者和消费者不直接通信,生产者只负责把消息发送到队列,消费者只负责从队列获取消息(不管是push还是pull). 消息被"消费&quo ...
- javascript window.confirm确认 取消对话框实现代码小结
本文章讲述的三种都是基于了javascript confirm提示确认框的做法了,只是在不同的地方写哦,有需要的同学可参考一下 confirm() 方法 confirm() 方法用于显示一个带有指定消 ...
- springboot 集成 RabbitMQ confirm 确认模式和 return 回退模式以及Consumer Ack模式
springboot 集成 RabbitMQ confirm 确认模式和 return 回退模式以及Consumer Ack模式 说明: RabbitMQ消息的可靠投递 在使用 RabbitMQ 的时 ...
- elementui确认消息区分取消和关闭按钮
默认情况下,elementui的确认消息,取消按钮和右上角弹窗,走的是同一个方法,也就是catch方法的回调,如果功能上需要做区分,就没法区分了. 所以,要解决这个问题,就需要在取消的回调方法里做一个 ...
- MessageBox 弹框 消息提示、确认消息
type 消息类型,用于显示图标 success / info / warning / error 1.消息提示 this.$alert('这是一段内容', '标题名称', {confirmButto ...
- RabbitMQ:confirm确认模式
confirm确认模式 0.概念 1.创建Maven项目 2.导入rabbitmq依赖 3.同步confirm 3.1 确认-同步-生产者Send 3.2 确认-同步-消费者Recv 3.3 缺点 4 ...
- RabbitMQ之事务以及Confirm确认模式
spring:rabbitmq:port: 5672host: 127.0.0.1username: guestpassword: guest 事务 事务的实现主要是对信道(Channel)的设置,主 ...
- javascript confirm 确认、取消的选择
用法: if (confirm("确认要删除这些记录么?")) { document.form1.action="commision.commisiondel.do&qu ...
最新文章
- myeclipse 6.0 弹出 Multiple Errors have Occurred 错误
- 工作空间从Windows转向fc8
- SCons命令 之 从入门到精通
- 跨平台的 NodeJS 组件解决 .NetCore 不支持 System.Drawing图形功能的若干问题
- Codeforces Round #131(Div. 2)
- 这个女生躲在衣柜等男友回家,结果竟是......
- linux服务器用哪个面板好,Linux服务器管理面板哪家比较好用?
- mysql itpub_mysql
- SysTick系统定时器(功能框图和优先级配置)
- 中国(2009-2017)全国各省结婚率和离婚率数据可视化
- mysql 1236错误_MySQL主从失败 错误Got fatal error 1236解决方法
- JavaWeb——RequestResponse笔记
- Excel表格插入斜线
- 水浴的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 【网安神器篇】——Whatweb指纹识别工具
- lubcon turmogrease turmosynthgrease turmotemp
- node使用express+multer文件上传和下载的问题
- 微慕小程序开源美化版
- php html 锚点,html中怎么设置锚点定位?设置锚点定位方法汇总
- opencv幻灯片代码
热门文章
- element-ui表单校验
- java memorystream 包_存储在MemoryStream中的裁剪图像中心
- java getevent_Java ActionEvent.getWhen方法代码示例
- 多租户saas 架构_实战复盘:toB产品的多租户架构设计
- ubuntu16.04 离线安装docker ce
- ActiveMQ学习总结(5)——Java消息服务JMS详解
- 了解 JavaScript (5)– 翻转器(rollover)
- (转)B2B2C,从营销的角度,来理解SaaS
- sendmail for linux
- 数据库及中间件术语解释