【问题标题】:Best way to store messages sent to Azure Service Bus?存储发送到 Azure 服务总线的消息的最佳方式?
【发布时间】:2020-03-30 10:27:04
【问题描述】:

我想使用 Azure 服务总线 Pub/Sub 进行一些服务间通信。但是,我希望能够在将来查看这些消息,即使它们已被检索并标记为已完成以用于故障排除或某些历史分析。这样做的最佳方法是什么?我曾考虑使用 Logic App 订阅服务总线并将这些消息存储在 Cosmos DB 中,但我必须按主题执行此操作。那显然不是一个可扩展的解决方案。任何其他建议的方法或可以做同样事情的其他服务?我简要地查看了事件中心,但无法保证交付。

【问题讨论】:

  • 您的主题的性质是什么?那些设置一次就不会改变吗?还是经常更换?如果是这样,您对他们的创作有任何控制权吗?归根结底,您正在查看数据存储选择和您的需求。根据您的需要,您将有资格或取消候选人资格。 EventHub 不是 IMO 的正确方法(顺便说一句,它是有保证的)。 CosmosDB、存储表、Azure SQL、具有延长保留期的事件 Azure Montior。这一切都归结为您的要求。
  • 主题应该很少更改,但我确实看到自己在需要时更频繁地添加新主题。是的,我将控制他们的创作。一种可能性是创建一个库并确保我的所有服务都使用它。该库不仅负责将该消息发送到 Azure 服务总线,还负责将其持久保存到另一个存储 [即Azure SQL 或 Cosmodb],但我不希望在发送每条消息时产生额外的存储延迟成本。此外,我会错过任何不使用我的库的客户发送的消息。
  • 如果您想处理消息将其存储在数据存储中,您总是会产生额外的延迟,因为您的代码必须与数据存储通信。拥有你的库对于一致性来说并不是一个坏主意。
  • 有没有办法使用另一个 azure 服务来自动监视这些消息并将这些消息转发到另一个存储 [即 Azure SQL 或 Cosmosdb]。就像我之前提到的那样,我可以使用逻辑应用程序,但连接器仅适用于特定主题,并且看到我将有许多主题,并根据需要创建新主题,该解决方案将是合适的。

标签: azure event-handling azureservicebus


【解决方案1】:

如果目的是将消息发送保存到 Azure 服务总线,则对每个主题进行全面订阅将是捕获这些消息的最简单方法。在存储这些消息以及您有多种选择的地方时。 LogicApps 或 Azure Functions 很容易开始捕获这些消息。您不必观看每个主题/订阅。您可以使用 Azure 服务总线 auto-forwarding 功能将所有这些消息从它们各自的包罗万象订阅发送到单个队列并侦听该队列。使用函数或逻辑应用程序,您将能够响应这些消息并将其信息存储在您想要的任何数据存储中。例如。使用 Functions,使用output bindings,将消息信息存储在 CosmosDB 或 Storage Table 中将非常简单,几乎没有代码。任何其他数据存储也是可能的。示例:Azure SQL Server output binding

【讨论】:

    猜你喜欢
    • 2012-08-28
    • 2017-11-30
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多