13,EasyNetQ-错误条件
在本节中,我们将看看任何消息系统中可能出现的各种错误情况,并查看EasyNetQ如何处理它们。
1,我的订阅服务死亡
你已经写了一个订阅了我的NewCustomerMessage的windows服务。 如果服务失败会发生什么? 为了提高效率,EasyNetQ为订阅实现了一个内部内存队列。 消息从RabbitMQ通过网络接收并放置在该队列中。 单个订阅线程将消息依次从队列中取出,并将它们传递给您提供的回调。 一旦回调完成,EasyNetQ将“Ack”发送回RabbitMQ。 在收到'Ack'之前,消息不会从RabbitMQ队列中删除。 如果您的服务在处理消息时死掉,则消息(以及EasyNetQ内存队列中的所有消息)将保留在RabbitMQ队列中。 一旦你的服务重新连接,消息将被重新发送。
2,我的订阅者消息发布速度比发布时慢
EasyNetQ使用RabbitMQ的服务质量设置将预设计数设置为一些合理的设置(当前为50)。 这意味着用户的内存队列中永远不会有超过50条消息。 这可以防止在订阅应用程序中发生内存不足异常。 一旦未发出消息的计数达到此级别,RabbitMQ将停止发送它们,并将它们留在其内部队列中。 当然,最终这个队列会占用RabbitMQ服务器机器上的所有磁盘空间。 您应该进行一些监测以确保在发生这种情况之前收到警报。
3,我的用户和RabbitMQ Broker之间有网络故障
正如在“连接到RabbitMQ”一节中所描述的,EasyNetQ实现了一个延迟连接策略。它假定代理并不总是可用的。当您第一次使用RabbitHutch连接到代理时。CreateBus, EasyNetQ进入一个连接尝试循环,如果在连接字符串中指定的地址上没有可用的代理,您将看到“尝试连接”的信息消息。用户可以使用总线订阅。即使没有代理,也要订阅。订阅细节由EasyNetQ缓存。当代理成为可用的连接循环时,将建立与代理的连接,并创建所有缓存的订阅。
同样,当EasyNetQ与代理失去连接时,它将返回到连接循环,您将在日志中看到“尝试连接”消息。 一旦连接重新建立,缓存的用户再次被创建。 这样做的结果是,您可以让您的订户在网络连接不可靠或您需要退出RabbitMQ代理的环境中运行。
4,我的订阅回调在消费时引发异常
如果您的订阅回调引发异常,则EasyNetQ将接收正在使用的消息并将其包含在特殊的错误消息中。 该错误消息将发布到EasyNetQ错误队列(名为EasyNetQ_Default_Error_Queue)。 您应该监视错误队列中的任何消息。 错误消息包括重新发布原始消息所需的所有信息以及异常的类型,消息和堆栈跟踪。 您可以使用EasyNetQ.Hosepipe实用程序重新发布错误消息。 请参阅下面的EasyNetQ.Hosepipe一节。
13,EasyNetQ-错误条件的更多相关文章
- 【EasyNetQ】- 自动订阅者
从v0.7.1.30开始,EasyNetQ简单易用AutoSubscriber.你可以用它来轻松地扫描实现任何接口的类的特定组件IConsume<T>或IConsumeAsync<T ...
- EasyNetQ使用(八)【对延迟消息插件的支持,自动订阅者】
RabbitMQ延迟消息插件仍然在实验阶段.你使用这个功能要自担风险. RabbitMQ延迟消息插件为RabbitMQ增加了新的交换机类型,允许延时消息投递. EasyNetQ为交换机通过定义一种新的 ...
- .NetCore中简单使用EasyNetQ
前言 我们在.Net中使用RabbitMQ,最原始的就是基于RabbitMQ.Client进行编码,在这个过程中我们需要通过代码约定和维护队列,Exchange等.如果是自行编码封装通用型的Rabbi ...
- TechEmpower 13轮测试中的ASP.NET Core性能测试
应用性能直接影响到托管服务的成本,因此公司在开发应用时需要格外注意应用所使用的Web框架,初创公司尤其如此.此外,糟糕的应用性能也会影响到用户体验,甚至会因此受到相关搜索引擎的降级处罚.在选择框架时, ...
- .NET平台开源项目速览(13)机器学习组件Accord.NET框架功能介绍
Accord.NET Framework是在AForge.NET项目的基础上封装和进一步开发而来.因为AForge.NET更注重与一些底层和广度,而Accord.NET Framework更注重与机器 ...
- 转:ORA-15186: ASMLIB error function = [asm_open], error = [1], 2009-05-24 13:57:38
转:ORA-15186: ASMLIB error function = [asm_open], error = [1], 2009-05-24 13:57:38http://space.itpub. ...
- IIS启动失败,启动Windows Process Activation Service时,出现错误13:数据无效 ;HTTP 错误 401.2 - Unauthorized 由于身份验证头无效,您无权查看此页
因为修改过管理员账号的密码后重启服务器导致IIS无法启动,出现已下异常 1.解决:"启动Windows Process Activation Service时,出现错误13:数据无效&quo ...
- CSharpGL(13)用GLSL实现点光源(point light)和平行光源(directional light)的漫反射(diffuse reflection)
CSharpGL(13)用GLSL实现点光源(point light)和平行光源(directional light)的漫反射(diffuse reflection) 2016-08-13 由于CSh ...
- ABP(现代ASP.NET样板开发框架)系列之13、ABP领域层——数据过滤器(Data filters)
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之13.ABP领域层——数据过滤器(Data filters) ABP是“ASP.NET Boilerplate P ...
- 推荐13款javascript模板引擎
javaScript 在生成各种页面内容时如果能结合一些模板技术,可以让逻辑和数据之间更加清晰,本文介绍 X 款 JavaScript 的模板引擎.(排名不分先后顺序) 1. Mustache 基于j ...
随机推荐
- [转]C++赋值运算符重载函数(operator=)
写在前面: 关于C++的赋值运算符重载函数(operator=),网络以及各种教材上都有很多介绍,但可惜的是,内容大多雷同且不全面.面对这一局面,在下在整合各种资源及融入个人理解的基础上,整理出一篇较 ...
- ProcessHacker可编译版本
说明 做一个批量进程内搜索字符串的工具. 试了processhacker-2.39-src.zip. https://sourceforge.net/projects/processhacker/fi ...
- b站评论爬取
var userData = {}; var startPage = 0; var endPage = 0; var startTime = ""; var endTime = & ...
- 关于php-fpm方式和apache配合使用的几点记录
1.apache2.4以后可以编译单独的模块可以使用fastcgi和phpfpm进行配合,打开以下的模块即可 LoadModule proxy_module modules/mod_proxy.so ...
- Ex3_15 判断图是否是一个强连通分量 判断点是否在汇点强连通分量中_十一次作业
(a) 可以用图中的每一个顶点表示街道中的每个十字路口,由于街道都是单行的,所以图是有向图,若从一个十字路口都有一条合法的路线到另一个十字路口,则图是一个强连通图.即要验证的是图是否是一个强连通图. ...
- 配置Sublime Text2的python运行环境(Sublime Text 3也类似)
1. 前言 用Sublime Text 2 配置Python运用环境,有简单配置还有像IDLE一样的配置,本文分成第一部分和第二部分. 2. 配置 第一部分(简单配置) 1.只需要打开Pref ...
- CF 449D 题解(状压+容斥)
状压妙啊... 本题的主体思路:状压+容斥原理(或状压+数位dp) 记g[i]表示按位与后结果所有位上至少有i个1的方案数 那么根据容斥原理,ans=g[0]-g[1]+g[2]-g[3]+g[4]. ...
- 性能测试二十:环境部署之Tomcat多实例部署+日志监控
一个tomcat性能有限,所以需要部署等多个tomcat 单实例部署与windows下类似,项目包放到webapp目录下,启动bin目录下的startup.sh即可启动命令:./startup.sh启 ...
- python接口自动化测试二十八:连接SQL sever操作
1.中文乱码问题: (1).文件头加上# -*- coding:utf-8 -*- 或者 #coding=utf8 (2).pymssql.connect连接串中charset是要跟你数据库的编码一样 ...
- 步步为营-55-js练习
1:加法计算器 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head&g ...