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 ...
随机推荐
- Week1个人作业
关于教材的疑问 阅读的教材<构建之法> 1第一章中提到:“软件企业=软件+商业模式”,这样的结构是否过于简单,尤其是在互联网+时代 2.在进行单元测试的时候,怎么做到100%覆盖 3.个人 ...
- 使用redis防止抢购商品超卖
前言: redis不仅仅是单纯的缓存,它还有一些特殊的功能,在一些特殊场景上很好用. 本篇博文用来测试下使用redis来防止抢购商品超卖问题. 内容: 使用redis的list进行测试 思路是设置一个 ...
- Sublime Text添加插入带当前时间说明
Sublime Text添加插入带当前时间说明 作者:木尘 日期:2014-11-25 插件实现插入带时间功能的说明: 1. 创建插件: Tools → New Plugin: import da ...
- Django-基本指令
目录 Django基本指令 下载Django 创建Django项目 创建APP应用 启动Django项目 更新数据库表或字段 清空数据库数据 创建超级管理员 查看更多命令 Django基本指令 下载D ...
- TClientDataSet[9]: 计算字段和 State
TClientDataSet 中计算字段有两种: Calculated(计算字段).InternalCalc(内部计算字段). 两者区别是: Calculated 在每次需要时都要重新计算; Inte ...
- 在配置文件里面设置bean 那么在类里面就要提供set方法用以注入
在配置文件里面设置bean 那么在类里面就要提供set方法用以注入
- 【题解】Oulipo
题目描述 给出两个串S1,S2(只有大写字母),求S1在S2中出现了多少次. 例如:S1=“ABA”,S2=“ABABA”,答案为2. 输入T组数据,对每组数据输出结果. 输入输出格式 输入格式 第一 ...
- linux下彻底卸载mysql 图解教程
linux下彻底卸载mysql 图解教程 1.查找以前是否装有mysql 命令:rpm -qa|grep -i mysql可以看到如下图的所示: 说明之前安装了:MySQL-client-5.5.25 ...
- 牛客网-湘潭大学校赛重现H题 (线段树 染色问题)
链接:https://www.nowcoder.com/acm/contest/105/H来源:牛客网 n个桶按顺序排列,我们用1~n给桶标号.有两种操作: 1 l r c 区间[l,r]中的每个桶中 ...
- 【刷题】BZOJ 3944 Sum
Description Input 一共T+1行 第1行为数据组数T(T<=10) 第2~T+1行每行一个非负整数N,代表一组询问 Output 一共T行,每行两个用空格分隔的数ans1,ans ...