10,EasyNetQ-发布确认
默认的AMQP发布不是事务性的,并且不能保证您的消息实际上会到达代理。 AMQP指定了一个事务性发布,但是对于RabbitMQ来说,它非常慢,我们还没有通过EasyNetQ API支持。 对于高性能保证交付,建议您使用“发布确认”。 简而言之,这是AMQP的扩展,当代理成功收到您的消息时,它会提供回调。
'成功收到'是什么意思? 这取决于 ...
- transient(瞬时)消息在队列入场时被确认。
- 持久性消息一旦被保存到磁盘或者在每个队列上被使用,就会被确认。
- 直接发布不可修改的瞬态消息。
通过在连接字符串上设置publisherConfirms = true来启用发布确认:
bus = RabbitHutch.CreateBus("host=localhost;publisherConfirms=true;timeout=10");
同步bus.Publish(..)方法将在返回之前等待确认。 在超时期限之前未确认(也在连接字符串中配置)将导致引发异常。 发布确认同步发布方法会显着减慢。 如果性能问题,您应该考虑使用PublishAsync方法:
bus.PublishAsync(new MyMessage
{
Text = "Hello World"
}).ContinueWith(task =>
{
// 这只会检查完成的任务IsCompleted是否成立,即使对于我们使用if(task.IsCompleted &&!task.IsFaulted)来检查成功的故障状态任务
if (task.IsCompleted)
{
//Console.Out.WriteLine("{0} Completed", count);
}
if (task.IsFaulted)
{
Console.Out.WriteLine("\n\n");
Console.Out.WriteLine(task.Exception);
Console.Out.WriteLine("\n\n");
}
});
这将在收到确认之前返回。 如果未收到确认或NACK确认,任务将在故障状态下完成。
10,EasyNetQ-发布确认的更多相关文章
- 9. RabbitMQ系列之消息发布确认
Publisher Confirms发布确认是用于实现可靠发布的RabbitMQ扩展. 我们将使用发布确认来确保已发布的消息已安全到达代理.我们将介绍几种使用publisher确认的策略,并解释其优缺 ...
- Nginx 1.10.2 发布,高性能 Web 服务器
Nginx 1.10.2 发布了.Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器 更新内容: Changes with n ...
- rabbitmq的发布确认和事务 - 2207872494的个人空间
rabbitmq的发布确认和事务 - 2207872494的个人空间 https://my.oschina.net/lzhaoqiang/blog/670749
- 【转载】rabbitmq的发布确认和事务
地址:https://my.oschina.net/lzhaoqiang/blog/670749 摘要: 介绍confirm的工作机制.使用spring-amqp介绍事务以及发布确认的使用方式.因为事 ...
- rabbitmq的发布确认和事务
摘要: 介绍confirm的工作机制.使用spring-amqp介绍事务以及发布确认的使用方式.因为事务以及发布确认是针对channel来讲,所以在一个连接中两个channel,一个channel可以 ...
- ArcGIS Server 10.1发布GP服务
ArcGIS Server 10.1发布GP服务 ArcGIS Server 10.1发布GP服务确实更简单了,只是刚使用不怎么习惯.ArcGIS Server 10.1发布GP服务需要先在ArcCa ...
- [转帖]AIDA64 6.10版发布:全面支持中国兆芯、海光x86 CPU
AIDA64 6.10版发布:全面支持中国兆芯.海光x86 CPU https://www.cnbeta.com/articles/soft/892877.htm 支持国产x86了 作为硬件识别工具领 ...
- Python 3.10 明年发布,看看都有哪些新特性?
我们目前生活在Python 3.8的稳定时代,上周发布了Python的最新稳定版本3.8.4.Python 3.9已经处于其开发的beta阶段,并且2020年7月3日预发布了beta版本(3.9.0b ...
- RabitMQ 发布确认
每日一句 军人天生就舍弃了战斗的意义! 概述 RabitMQ 发布确认,保证消息在磁盘上. 前提条件 1.队列必须持久化 队列持久化 2.队列中的消息必须持久化 消息持久化 使用 三种发布确认的方式: ...
- 【EasyNetQ】- 发布确认
默认的AMQP发布不是事务性的,并不保证您的消息实际到达代理.AMQP确实指定了事务发布,但是使用RabbitMQ它非常慢,我们还没有通过EasyNetQ API支持它.对于高性能保证交付,建议您使用 ...
随机推荐
- SpringBoot使用Redis缓存
(1).添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId&g ...
- 泰克TDS1000B示波器使用说明
1.前言 本文主要根据泰克官方网站TDS1000B/TDS2000B使用教程视频进行整理. 2.认识你的示波器 TDS1000B带宽从40MHZ到200MHZ,采样率高达2Gbps
- 找到多个与名为“Home”的控制器匹配的类型的解决方案
主地址:http://localhost:3412/Home/Index 区域地址:http://localhost:3412/T200/Home/Index 解决方法: 注册路由添加命名空间(nam ...
- MFC 使用用指定USB设备串口
在做设备串口通讯时,往往需要自动连接到想要连接的usb转串口设备上. #include <Setupapi.h> int CMFCApplication1Dlg::FindUSBCOM() ...
- javascript 搞不清原型链和constructor
prototype.constructor仅仅可以用于识别对象是由哪个构造函数初始化的,仅此而已. var one=new Person(‘js’); 要解释这个结果就要仔细研究一下new这个操作符了 ...
- 对 Laravel 的 Controller 做 Unit Test
之前尝试过对 Laravel 的 Controller 做 Feature Test,但是在业务变得越来越复杂之后,我感觉对 controller 里的函数也没了自信,急需对功能函数做 Unit Te ...
- Luogu P3616 【富金森林公园】
我们首先考虑一块石头高度变化对每个高度的查询的答案的影响, 即我们要记录,对于每个高度的查询的答案 所以要离散化高度(不然哪开的下数组啊) 不难发现,一次变化的对于不同高度的影响,对于一段连续高度是相 ...
- 2017-2018-2 20155309 南皓芯 Exp7 网络欺诈防范
实践内容 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体实践有 1,简单应用SET工具建立冒名网站 2.ettercap DNS spoof 3.结合应用两种技术,用 ...
- 使用spring-boot-starter-data-jpa 怎么配置使运行时输出SQL语句
在 application.properties 中加入以下配置 spring.jpa.show-sql=true
- android-getTextSize返回值是以像素(px)为单位的,setTextSize()以sp为单位
使用如下代码时,发现字号不会变大,反而会变小:size = (int) mText.getTextSize() + 1;mText.setTextSize(size);后来发现getTextSize返 ...