Nservicebus 超时是否可以像消息一样重试?

Nservicebus 超时是否可以像消息一样重试?,nservicebus,Nservicebus,我们有一个长期运行的saga流程,其中包括超时,当超时开始时,首先发生的事情是调用外部数据源 我们想知道,如果源关闭(或出现其他问题),直接查询源并让超时进入错误队列是否合适,或者我们是否应该让超时创建并发送一条经过处理的消息,然后从那里查询源(因此,如果出现问题,消息将进入错误队列)然后回复原发件人 我们觉得我们的NserviceBus代码有点过于复杂,正在寻找简化它的方法,我们想知道这是否是一个很好的机会 public void Timeout(TimeoutEvent event) {

我们有一个长期运行的saga流程,其中包括超时,当超时开始时,首先发生的事情是调用外部数据源

我们想知道,如果源关闭(或出现其他问题),直接查询源并让超时进入错误队列是否合适,或者我们是否应该让超时创建并发送一条经过处理的消息,然后从那里查询源(因此,如果出现问题,消息将进入错误队列)然后回复原发件人

我们觉得我们的NserviceBus代码有点过于复杂,正在寻找简化它的方法,我们想知道这是否是一个很好的机会

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要获取更多详细信息:-)