首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >接收时Service队列回滚

接收时Service队列回滚
EN

Stack Overflow用户
提问于 2017-08-15 11:24:09
回答 1查看 703关注 0票数 1

基于这里的As使用

Service提供自动有害消息检测。如果接收来自队列的消息的事务回滚5次,自动有害消息检测将队列状态设置为OFF。此特性为应用程序无法以编程方式检测到的灾难性故障提供了保护。

我有一个windows服务应用程序,它轮询SB队列并将它们发送到web服务端点。因为我应该处理任何“服务器关机”问题,所以我将“队列项接收”和“队列项发送”方法包含到相同的事务中。在第一个异常(HttpRequestException)上,我开始对服务器进行预定义超时,然后继续/关闭程序。

但是,回滚5次是一个问题,我了解到,无论5个连续回滚之间的时间间隔如何,它总是会在全局范围内增加回滚计数,因此队列最终将被禁用。我说得对吗?队列是否有使回滚计数为零的超时?

如果这是一种行为,那么从事务中排除“队列项发送”方法更好吗?如果我这样做,我应该遵循这样的方法:在例外情况下,将消息保存在另一个资源(表、文件)中,以便稍后发送,或者其他的替代方案.

如果将表用作队列让我的事务保持一致,并从某人的回滚问题中解脱出来,那该怎么办?它会和某人一样可靠吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-15 12:00:49

AFAIK,与POISON_MESSAGE_HANDLING = ON一起在队列上连续5次回滚同一消息将禁用队列,而不考虑时间间隔。

您考虑过简单地关闭队列的毒消息处理吗?然后,应用程序就有责任区分真正的有害消息(永远无法成功处理的消息)和外部服务依赖的问题。在第一种情况下,您可以在其他地方记录问题消息并提交,而不是回滚。

您还可以使用其他模式,例如重新排队消息和提交,但这在很大程度上取决于是否必须按顺序处理消息。

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

https://stackoverflow.com/questions/45691859

复制
相关文章

相似问题

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