首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RabbitMQ c#客户端回调何时启动?

RabbitMQ c#客户端回调何时启动?
EN

Stack Overflow用户
提问于 2012-02-17 02:03:55
回答 1查看 593关注 0票数 1

我还没有找到一种方法来确定发布者何时由于tcp背压(流量控制)而挂起。对于我的应用程序来说,挂起任何线程都是非常不可接受的。如果发布操作不能快速执行,我需要能够中止发布操作。我注意到Pika客户端对此有一个回调,但在c#客户端文档中找不到任何东西。有人有解决这个问题的办法吗?我可以创建一个后台任务来执行发布,并在超时后中止线程,但这似乎很繁重,而且thread.abort也有自己的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-19 10:06:39

RabbitMQ从显式的流量控制切换到通过TCP背压进行节流的原因是为了支持更多的客户端(其中许多客户端无法处理像channel.flow这样的异步方法)。不幸的是,它的完成方式,也可以说是应该完成的方式,对出版商来说是完全透明的--出版商没有办法知道它何时被扼杀了。

如果你真的有一个硬实时的发布保证,你唯一的选择就是实现一个手动超时。当然,这并不能解决RabbitMQ过载的根本问题,所以停止发布、终止连接并打开一个新连接不会让您再次接近发布。

因此,您要么1)需要修改发布为什么需要如此严格的保证,要么2)向RabbitMQ cluster添加更多节点(这非常简单,旨在改善这种情况)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9316566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档