Basic(消息)的一些属性及方法
AMQP协议:是一个金融级的消息队列,确保消息万无一失
1、消息发布端的确认
手动确认消息是否已经发送
场景:发布消息到RabbitMQ中,我们需要知道这个消息是否发布成功了。
*发布确认影响性能 confirm机制对性能的影响 < tx机制对性能的影响
1)、confirm机制
channel.ConfirmSelect();
channel.BasicPublish("headersExchange", string.Empty, properties, Encoding.UTF8.GetBytes("来自.net的问候"));
var isAllPublished = channel.WaitForConfirms();
2)、tx机制
try
{
//发布消息
//String exchange, 交换机名称
//String routingKey, routingKey
//IBasicProperties basicProperties, 发布属性
//Byte[] body 消息内容
channel.TxSelect();
channel.BasicPublish("headersExchange", string.Empty, properties, Encoding.UTF8.GetBytes("来自.net的问候"));
channel.TxCommit();
}
catch (Exception)
{
channel.TxRollback();
}
2、消息消费端的确认
自动确认:消息出队列的时候就自动确认
手动确认:消息出队列之后,要应用程序自己去确认是否已经消费完毕,如果消费端拿到消息之后没有手动确认,这个时候消息不会被丢失。
//直接获取消息
//String queue, 队列名称
//Boolean autoAck 是否自动确认(一般设置为true)
var result = channel.BasicGet("headersQueue", false);
//手动确认
//UInt64 deliveryTag,
//Boolean multiple 结果是否为多条数据
channel.BasicAck(result.DeliveryTag, false);
手动拒绝:消费端拒绝队列发送过来的消息
//直接获取消息
//String queue, 队列名称
//Boolean autoAck 是否自动确认(一般设置为true)
var result = channel.BasicGet("headersQueue", false);
//手动确认
//UInt64 deliveryTag,
//Boolean multiple 结果是否为多条数据
channel.BasicAck(result.DeliveryTag, false);
//手动拒绝(单个)
//UInt64 deliveryTag,
//Boolean requeue 是否重新放回队列,true==是,false==丢弃
channel.BasicReject(result.DeliveryTag, true);
//手动拒绝(单或多均可)
//UInt64 deliveryTag,
//Boolean multiple, 是否多条数据
//Boolean requeue 是否重新放回队列,true==是,false==丢弃
channel.BasicNack(result.DeliveryTag, false, true);
重新递送【商家补发】:类似于快递丢单,商家只能重新发一次
//直接获取消息
//String queue, 队列名称
//Boolean autoAck 是否自动确认(一般设置为true)
var result = channel.BasicGet("headersQueue", false);
//手动确认
//UInt64 deliveryTag,
//Boolean multiple 结果是否为多条数据
channel.BasicAck(result.DeliveryTag, false);
//手动拒绝(单个)
//UInt64 deliveryTag,
//Boolean requeue 是否重新放回队列,true==是,false==丢弃
channel.BasicReject(result.DeliveryTag, true);
//手动拒绝(单或多均可)
//UInt64 deliveryTag,
//Boolean multiple, 是否多条数据
//Boolean requeue 是否重新放回队列,true==是,false==丢弃
channel.BasicNack(result.DeliveryTag, false, true);
//重新递送
//Boolean requeue true==重新入队列,可能会被其他消费者所接收;false==重新给当前消费者递送
channel.BasicRecover(false);
消息中的Properties属性
创建方式
//设置消息属性
var properties = channel.CreateBasicProperties();
1.Persistent:Bool
是否持久化
Basic(消息)的一些属性及方法的更多相关文章
- Node.js process 模块常用属性和方法
Node.js是常用的Javascript运行环境,本文和大家发分享的主要是Node.js中process 模块的常用属性和方法,希望通过本文的分享,对大家学习Node.js http://www.m ...
- easyUI validatebox设置值和获取值,以及属性和方法
一:表单元素使用easyui时,textbox和validatebox设置值和获取值的方式不一样[转] 1.为text-box设置值只能使用id选择器选择表单元素,只能使用textbox(" ...
- SVG DOM常用属性和方法介绍
将以Adobe SVG Viewer提供的属性和方法为准,因为不同解析器对JavaScript以及相关的属性和方法支持的程度不同,有些方法和属性是某个解析器所特有的.SVG支持DOM2标准. 12.2 ...
- JMS学习(三)JMS 消息结构之属性及消息体详解
一.前言 通过上一篇的学习我们知道了消息分为三个部分,即消息头,属性及消息体,并对消息头的十个属性进行了详细的介绍,本文再对消息属性及消息体进行详细的介绍. 二.属性介绍 消息属性的主要作用是可以对头 ...
- VB中的属性、方法和事件概念解析
Visual Basic 语言中的所有对象都有它们自己的属性.方法和事件,其中包括窗体和控件.可以将属性视为对象的特性,将方法视为对象的操作,而将事件视为对象的响应. 日常生活中的对象(如氦气球)也具 ...
- JavaSE——面向对象与面向过程、类与对象、(属性、方法、构造器)等
一:面向对象与面向过程 二者都是一种思想,面向对象是相对于面向过程而言的. 面向过程: 1.面向过程思想强调的是过程(动作). 2.在面向过程的开发中,其实就是面向着具体的每一个步骤和过程,把每一个步 ...
- JS操作DOM元素属性和方法
Dom元素基本操作方法API,先记录下,方便以后使用. W3C DOM和JavaScript很容易混淆不清.DOM是面向HTML和XML文档的API,为文档提供了结构化表示,并定义了如何通过脚本来访 ...
- 《JS权威指南学习总结--8.7 函数属性、方法和构造函数》
内容要点: 在JS程序中,函数是值.对函数执行typeof运算会返回字符串 "function",但是函数是JS中特殊的对象.因为函数也是对象,它们也可以拥有属性和方法,就像普 ...
- Ajax01 什么是ajax、获取ajax对象、ajax对象的属性和方法
1 什么是ajax ajax是一种用来改善用户体验的技术,其本质是利用浏览器提供的一个对象(XMLHttpRequest,也可称之为ajax对象) 向服务器发送异步请求;服务器返回部分数据(不是一个完 ...
- JavaScript中的window对象的属性和方法;JavaScript中如何选取文档元素
一.window对象的属性和方法 ①setTimeout()方法用来实现一个函数在指定毫秒之后运行,该方法返回一个值,这个值可以传递给clearTimeout()用于取消这个函数的执行. ②setIn ...
随机推荐
- beta1
组长:吴晓晖 过去两天完成了哪些任务: 代码重构进行中,界面,预计两个beta单位完成 展示GitHub当日代码/文档签入记录 接下来的计划 更加人性化的推荐算法 还剩下哪些任务 有哪些困难 有哪些收 ...
- 弟三周作业之VS2015
这周有个任务就是安装VS2015,然后进行简单的单元测试. 首先我上吴小勇同学给的MSDN官网(http://www.itellyou.cn/)下载VS2013, 然后装上后,在工具栏里,点击工具里的 ...
- VS2013新建web项目时出错,系统找不到指定文件
好不容易找了一个VS2013_RTM_ULT_CHS来安装好,Key:BWG7X-J98B3-W34RT-33B3R-JVYW9 兴高采烈的打开vs2013,新建web项目,结果弹出一个错误: 傻眼了 ...
- 贝叶斯先验解释l1正则和l2正则区别
这里讨论机器学习中L1正则和L2正则的区别. 在线性回归中我们最终的loss function如下: 那么如果我们为w增加一个高斯先验,假设这个先验分布是协方差为 的零均值高斯先验.我们在进行最大似然 ...
- node模块加载机制。
- Postgresql迁移数据文件存放位置
1. POSTGRESQL的安装 centos7 里面默认的pgsql的版本是 如果想用更高的版本需要执行以下如下的命令 rpm -ivh https://download.postgresql.or ...
- 平时在PHP编码时有没有注意到这些问题
编出一手好代码,这个是需要你在平时开发中日积月累的,平时如果你有注意到以下的那些代码的编码,那么祝贺你,你在技能提升这方面已经垫下了一些基础,编写出一手好代码,说白了就是你特么注意到性能这块的问题,代 ...
- Json序列化循环引用的问题
今天在发布接口的时候出突然出现了一个问题,报错代码为: 1 An exception has occurred while using the formatter 'JsonMediaTypeForm ...
- MT【185】$\max$的表示
已知$f(x)=x^2+(a-4)x+1+|x^2-ax+1|$的最小值为$\dfrac{1}{2}$,则$a$=______ 提示:$f(x)=\max\{2(x-1)^2,2(a-2)x\}$,从 ...
- 【BZOJ1227】[SDOI2009]虔诚的墓主人(线段树)
[BZOJ1227][SDOI2009]虔诚的墓主人(线段树) 题面 BZOJ 洛谷 题解 显然发现答案就是对于每一个空位置,考虑上下左右各有多少棵树,然后就是这四个方向上树的数量中选\(K\)棵出来 ...