首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >针对MSMQ中不同消息的不同重试策略

针对MSMQ中不同消息的不同重试策略
EN

Stack Overflow用户
提问于 2013-08-05 15:45:08
回答 1查看 1.2K关注 0票数 2

我们需要一个API,它允许通过MSMQ消息队列进行异步更新,这是我正在组合的,这将允许使用API的开发人员为每个消息指定不同的重试策略。因此,一个高优先级的客户端系统,例如销售系统,将提交所有的消息,每次发送尝试5次(重试)和15分钟,而一个低优先级的客户端系统,例如后端邮件拍摄系统,将允许用户更新他们的营销偏好,提交消息,3次重试和每次尝试之间的一小时。

在System.Messaging MSMQ (version 3或4)实现中是否有一种方法可以指定重试次数、重试延迟以及消息是发送到死信队列还是刚刚删除?(如果是,怎么做?)

如果其他消息传递框架满足了这一要求,我愿意使用它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-06 10:07:44

在System.Messaging MSMQ (版本3或4)实现中是否有指定重试次数的方法?

根据使用的是哪个操作系统/msmq版本,指定重试语义在WCF中非常复杂。下面是使用事务性队列的Windows2008和MSMQ4。

绑定的主要设置称为MaxRetryCycles。一个重试周期是尝试从队列中成功读取消息并在处理方法中处理它。这种“尝试”实际上可以由msmq绑定属性ReceiveRetryCount定义的多次尝试组成。ReceiveRetryCount是应用程序尝试读取消息并在回滚去队列事务之前处理它的次数。这标志着一个重试周期的结束。

您还可以使用RetryCycleDelay属性在循环之间引入延迟。

一个更复杂的考虑是如何处理即使经过多次重试循环也失败的消息。

允许使用API的开发人员为每条消息指定不同的重试策略。

我不确定如何使用MSMQ来实现这一点--据我所知,只能在每个端点的基础上设置重试语义。如果使用的是事务,那么甚至不能允许API用户设置所发送消息的优先级(事务性队列保证按顺序传递)。

您唯一能做的就是将API的另一个实例托管为高优先级和低优先级的实例。这些信息可以托管在不同的环境中,这有一个额外的好处,即低优先级消息不会与具有高优先级消息的系统资源竞争。

希望这能有所帮助。

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

https://stackoverflow.com/questions/18062275

复制
相关文章

相似问题

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