【问题标题】:Handling NServiceBus timeouts correctly正确处理 NServiceBus 超时
【发布时间】:2010-09-16 10:58:26
【问题描述】:

NServiceBus 提供了一个超时机制。来自nservicebus.com

基础上的RequestTimeout方法 类告诉 NServiceBus 发送一个 向另一个端点发送消息 持久地为我们留出时间......有一个 NServiceBus 自带的进程 称为超时管理器 提供了一个基本的实现 这个功能。

时间到了,超时管理器 向 saga 发送消息 导致其超时方法是 使用相同的状态对象调用 原来通过了。

正如我所见,即使消息已传递给接收者,也有可能触发超时(例如,回复卡在某处)。

我如何设计我的应用程序,以使我的应用程序无论消息是否发送到接收者都能正常运行。

【问题讨论】:

  • 你问如果超时管理器失败了怎么办?
  • 没有。我正在考虑即使消息已传递给接收者也会触发超时的极端情况(例如,回复卡在某处)。问题是如何在不知道消息是否已传递的情况下让您的应用程序表现良好。

标签: nservicebus cqrs


【解决方案1】:

如果客户端向服务器发送消息,然后请求超时,请求的状态将被存储。如果客户端在服务器回复之前收到超时消息,那么您可以将超时返回的状态与当前状态进行比较,看看服务器没有回复并决定做什么。如果请求不再有效,您可能会忽略回复。如果是这种情况,您可能需要查看服务器消息的“TimeToBeReceived”属性。它将在指定时间内丢弃它无法接收的消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-27
    • 2014-10-27
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多