如何设计解决方案以处理CRM 2016 ONPREM中的大量记录



我正在寻找解决一个业务需求的最佳解决方案。业务需要向客户发送SMS参加民意调查。

在CRM中,我们有一个自定义实体来控制SMS内容,URL和提醒以及一个管理交易的外部数据库。

从CRM侧中,我需要处理所有记录并更新SMS内容并缩短URL并将其更新为外部数据库。使用第三方API缩短URL。

我的问题是如何设计解决方案,该解决方案可以处理数百万条记录而没有任何问题,哪一个将是更好的控制台应用程序或工作流?

如何避免绩效问题,如果我将这么多的人口放在foreach循环/平行foreach循环中,以采取以下操作处理记录 -
1.在CRM实体记录上执行更新
2.致电第三方API以缩短响应&在CRM实体中更新
3.在外部数据库中更新一些标志和SMS内容。

我实际上经历了与您相似的情况,我可以给您的最佳建议是将所有业务逻辑外在化,您可以在另一个系统/过程中,所有重型工作都应该是完成Dynamics365。

这就是我解决问题的方式:

  1. 像您在Dynamics中一样创建A SMS消息自定义实体,以及发送短信所需的所有信息(电话号码,消息,状态等)。

  2. 实现了一个异步帖子创建插件,该插件将将所有这些信息发送到Azure Service Bus队列。异步在这里确实很重要,因此动态被尽可能少。该插件应尽可能轻巧,没有任何业务逻辑。

  3. 在队列接收新消息时,创建了一个旨在触发的Azure函数。这个Azure功能完成了我需要的所有业务逻辑,这主要是与SMS网关的集成。在您的情况下,它可以调用第三方API以缩短URL,与外部数据库集成等。最后,使用缩短URL和其他所需的信息更新SMS消息记录。

更多笔记

  • 如果您觉得自己的流程需要提高性能,则可以轻松扩展大多数Azure服务,这是一个主要优势,而不是在Dynamics内进行处理。
  • 在步骤2中,您也可以使用Webhook实现此逻辑。
  • 您需要越高的吞吐量,您应该考虑的越多,将步骤2和3用WebJob替换为递归,它会递归搜索并在仍需要处理的动态中获取所有SMS消息(您可以使用状态来控制此消息例如,要处理),然后执行您需要的所有逻辑,如步骤3。

最新更新