【问题标题】:nservicebus + webhooks +Errors +MaxRetriesnservicebus + webhooks +Errors +MaxRetries
【发布时间】:2011-12-07 10:51:31
【问题描述】:

功能说明

NServiceBus 网关http://docs.particular.net/nservicebus/gateway/ 似乎是一种使用 NServiceBus 基础架构实现内部 webhook 的方法。

我们需要在这个概念上更进一步,向任何有权在我们系统中注册 webhook url 的第三方订阅者开放 few 事件。 p>

评论

我们计划创建两个初始窗口服务

1) WebHookBatchService,可以作为订阅者添加到感兴趣的特定消息。

<UnicastBusConfig>
    <MessageEndpointMappings>
           .......
        <add Messages="MyMessages.MyImportantMessage, MyMessages" Endpoint="WebHookBatchService.Queue"/>
           .......
    </MessageEndpointMappings>
</UnicastBusConfig>

2) WebHookProcessService - 实际处理 WebHookBatchService 发送的 1 条消息。

一旦在 WebHookBatchService.Queue 上收到消息,我们的 WebHookBatchService 将查找特定租户 + 消息类型的所有订阅者,并为 WebHookProcessService 向 WebHookProcessService.Queue 发送单独的消息(我们可以创建一个 nservicebus 负载均衡器实例)桥接批处理和实际处理器)以实际处理可能使用http://restsharp.org/ 的真实消息。

问题

目前是否有任何现有的开源项目可以做到这一点?

既然我们无法控制订阅者的持久性,我们应该如何管理错误?

http://wiki.shopify.com/WebHook

如果完全相同的 webhook 连续失败 19 次,则会删除一个 webhook。

它没有提到 webhook 中的任何延迟。人们对重试逻辑的标准延迟有什么体验?

以下是其他一些想法:

提案 0:MaxRetries="1"。每晚清除 WebHookProcessService.ErrorQueue。 (不重试 - 如果第一次失败,保证消息丢失)

建议 1: 异常捕获时的 MaxRetries="1" 发送电子邮件,其中包含将通过 http 传递的消息的 xml 版本。
每晚清除 WebHookProcessService.ErrorQueue。 -- 我看到了潜在的垃圾邮件问题。

提案 2:nservicebus MaxRetries 立即重试,不会延迟。因此,我需要创建(1 小时 - 24 小时)存储桶队列并使用 RetrySchedulerService,尽管当服务端点开始工作时,当订阅者一次以非 DateCreated 有序方式获得 25 条消息时,我认为这很难维护和混淆.

挖掘想法...

【问题讨论】:

标签: c# nservicebus webhooks


【解决方案1】:

网关通常用于物理站点之间通过 HTTP 的通信。由于您将端点暴露给世界以接受回调,我认为您可以只使用内置的 WCF 托管并通过防火墙将端点暴露给第三方。您的其余设置听起来适合我。

至于错误,您是正确的,NSB 会立即重试,但如果您使用网络回调,这可能会让您在出现小问题的情况下度过难关。您将需要确定如何处理错误队列,我们​​只需构建一个新端点来处理错误队列,并使用逻辑来确定重试、延迟等。实现此目的的一个好方法是使用 Saga,其中包括超时管理器。这启用了一个工作流程,您可以在其中重试指定次数、尝试另一次通信、记录所有内容,并最终通知可以联系第 3 方的人,让他们知道有东西被破坏了。

【讨论】:

  • 感谢您的意见。只是为了清除 webhook 的概念。我不公开任何端点,因此不需要 WCF。第三方订阅者公开了我发布到的 URL。 (推送通知)我同意带有超时管理器的 Saga 似乎是最灵活的方法。您知道将这 2 个一起用于错误处理的示例吗?
猜你喜欢
  • 1970-01-01
  • 2011-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-19
  • 2020-10-11
  • 2019-12-08
  • 2021-11-01
相关资源
最近更新 更多