Как разработать решение для обработки большого количества записей в CRM 2016 onPrem? - PullRequest
0 голосов
/ 23 марта 2019

Я ищу лучшее решение для одной бизнес-задачи. Для участия в опросе бизнесу необходимо отправлять SMS-сообщения клиентам.

В CRM у нас есть собственный объект для управления контентом SMS, URL-адресом и напоминанием, а также внешняя база данных для управления транзакциями.

Со стороны CRM мне нужно обработать все записи и обновить содержимое SMS, сократить URL-адрес и обновить его до внешней базы данных. Чтобы сократить URL, используйте сторонние API.

Я спрашиваю, как спроектировать решение, которое может без проблем обрабатывать миллионы записей. Какое из них будет лучше Консольного приложения или Рабочего процесса?

Как избежать проблем с производительностью, если я поместил такое большое количество населения в цикл foreach / параллельный цикл foreach для обработки записей с помощью следующих действий -
1. Выполните обновление записи объекта CRM
2. Вызов стороннего API для получения сокращенного URL-адреса в ответ и обновления в объекте CRM
3. Обновление некоторых флагов и содержимого SMS во внешней базе данных.

1 Ответ

0 голосов
/ 28 марта 2019

У меня фактически была такая же ситуация, как и у вас, и лучший совет, который я могу вам дать, это перенести всю бизнес-логику, которую вы можете, на другую систему / процесс, всю тяжелую работу следует выполнять за пределами Dynamics 365.

Вот как я решил проблему:

  1. Создано SMS-сообщение настраиваемый объект, как вы сделали в динамике со всей информацией, необходимой для отправки текстового сообщения (номер телефона, сообщение, статус и т. Д.).

  2. Реализован плагин Async Post Create, который отправляет всю эту информацию в очередь Azure Service Bus. Асинхронность здесь действительно важна, так что динамика блокируется как можно меньше. Этот плагин должен быть максимально легким и не иметь никакой бизнес-логики.

  3. Создана функция Azure, которая запускается при получении нового сообщения в очереди. Эта функция Azure выполняла всю бизнес-логику, которая мне была нужна, в основном это была интеграция с SMS-шлюзом. В вашем случае он может вызвать сторонний API для сокращения URL-адреса, интеграции с внешней базой данных и т. Д. Наконец, обновите запись SMS-сообщения с помощью сокращенного URL-адреса и другой необходимой вам информации.

Еще несколько заметок

  • Вы можете легко расширить большинство служб Azure, если считаете, что вашему процессу требуется повышение производительности, что является основным преимуществом по сравнению с обработкой в ​​динамике.
  • На шаге 2 вы также можете достичь этой логики с помощью Webhook .
  • Чем выше пропускная способность, тем больше вы должны подумать о замене шага 2 и 3 веб-заданием, которое рекурсивно ищет и извлекает все смс-сообщения в динамике, которые еще необходимо обработать (вы можете контролировать это со статусом обрабатывается , например), а затем выполняет всю необходимую логику, как в шаге 3.
...