gpt4 book ai didi

c# - 通过队列消息进行负载均衡时如何处理自动生成的 ID?

转载 作者:行者123 更新时间:2023-11-30 18:14:46 25 4
gpt4 key购买 nike

我们有一个以 MS Dynamics CRM 作为数据库的 asp.net 核心 Web Api,我们希望实现队列消息传递以获得更好的性能,我们的选择是 RabbitMQ。

我们在 CRM 中写入的情况很多,但新 CRM 实体记录的 ID 是自动生成的 GUID。这个新的 GUID 将用于其他请求,例如:在其他实体中查找,更新此记录..

假设我们有 3 个实体:

Topics            [ID(auto-generated), Name]
UserTopic [ID(auto-generated), UserId, TopicId]

UserComment [ID(auto-generated), <strong>UserTopicId(1)</strong>, Comment]

当用户订阅主题时,我们应该在 Web API 级别执行以下操作:

 1- Send a message to the queue of register in topic
2- Add an object UserTopic to the cache (with an empty or auto-generated GUID)

因此,消息处理程序将在 UserTopic 实体中插入一条新记录,CRM 将在其中生成 Web API 不知道的新 GUID(2)

如果用户需要为此主题添加评论,我们需要 GUID(2) 来插入实体 UserComment (1)

那么如何在消息处理程序中处理 CRM 创建的这种自动生成的 GUID?

最佳答案

基本上你有三种不同的选择

  1. 如评论中所建议的那样,您可以检索在创建记录期间分配的 ID。这将需要在您的消息传递中使用 RPC 模式,这与异步消息传递的性质相矛盾

  2. 您可以在创建请求中定义 id。您在实体的构造函数或 id 属性中分配的 id 然后用于在 CRM 中创建记录。

    public Entity (string logicalName, Guid id) {…}

    您必须确保传递的 id 尚未用于此实体

  3. 您可以使用备用键而不是依赖 CRM 的主键。因此,您可以使用 Web API 应用程序的标识符来识别 CRM 中的相应记录。

您可以在 Use an alternate key to create a record 找到有关 2. 和 3. 的更多信息。

关于c# - 通过队列消息进行负载均衡时如何处理自动生成的 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49718444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com