Nservicebus 超时是否可以像消息一样重试?
我们有一个长期运行的saga流程,其中包括超时,当超时开始时,首先发生的事情是调用外部数据源 我们想知道,如果源关闭(或出现其他问题),直接查询源并让超时进入错误队列是否合适,或者我们是否应该让超时创建并发送一条经过处理的消息,然后从那里查询源(因此,如果出现问题,消息将进入错误队列)然后回复原发件人 我们觉得我们的NserviceBus代码有点过于复杂,正在寻找简化它的方法,我们想知道这是否是一个很好的机会Nservicebus 超时是否可以像消息一样重试?,nservicebus,Nservicebus,我们有一个长期运行的saga流程,其中包括超时,当超时开始时,首先发生的事情是调用外部数据源 我们想知道,如果源关闭(或出现其他问题),直接查询源并让超时进入错误队列是否合适,或者我们是否应该让超时创建并发送一条经过处理的消息,然后从那里查询源(因此,如果出现问题,消息将进入错误队列)然后回复原发件人 我们觉得我们的NserviceBus代码有点过于复杂,正在寻找简化它的方法,我们想知道这是否是一个很好的机会 public void Timeout(TimeoutEvent event) {
public void Timeout(TimeoutEvent event)
{
bus.send(ExternalServiceCallCmd cmd)
}
public void handle(ExternalServiceCallCmd cmd)
{
manager.CallToExternalService();
}
如果对外部服务的调用失败,将重试ExternalServiceCallCmd,并最终进入错误队列
我们想知道是否可以这样简化:
public void Timeout(TimeoutEvent event)
{
manager.CallToExternalService();
}
如果对外部服务的调用失败,TimeoutEvent将重试,并在必要时在错误队列中结束。好的,第一条规则是不要在saga处理程序中执行I/O,而是将命令发送给工作处理程序
除了与自身的内部状态交互之外,saga不应该访问数据库、调用web服务或访问其他资源——既不直接也不间接地通过将这些依赖项注入其中
详情如下:
这回答了你的问题吗
请随时联系支持人员support@particular.net要获得更多详细信息:-)好的,第一条规则是不要在saga处理程序中执行I/O,而是将命令发送给工作处理程序
除了与自身的内部状态交互之外,saga不应该访问数据库、调用web服务或访问其他资源——既不直接也不间接地通过将这些依赖项注入其中
详情如下:
这回答了你的问题吗
请随时联系支持人员support@particular.net要获取更多详细信息:-)