【发布时间】: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