Я столкнулся с проблемой асинхронной обработки обновлений/удалений записи, которая подвергается нескольким изменениям одновременно.
Сценарий:
Всякий раз, когда в моей системе происходит добавление/обновление/удаление, я помещаю снимок данных в таблицу «очереди». Затем другая служба синхронно обрабатывает эти записи и группирует их. Проблема возникает, когда несколько записей для одной и той же сущности поставлены в очередь одновременно.
Например, мне нужно создать встречу в Teamleader для сделки X. В моей очереди есть следующие 3 записи: :
Обновить — заказ X запланирован на 11 часов.
Обновить — заказ X запланирован на 12 часов.
Удалить — заказ X удален.
Записи создаются одновременно, поэтому мои данные JSON в очереди не отражают изменения по сравнению с более ранними записями в очереди.
Текущая обработка:
Обновление (11 часов) — создает встречу для сделки X (поскольку в полезных данных заказа отсутствует внешний идентификатор встречи). Я сохраняю идентификатор собрания в заказе после создания.
Обновление (12 часов). При этом также создается новое собрание, поскольку ссылка на внешнее собрание (из первого обновления) не отражается в данные очереди еще нет, но они сохранены в базе данных.
Удалить — внешняя ссылка для идентификатора собрания не установлена, поэтому я не знаю, какое собрание удалить. Удаление всех встреч для сделки невозможно, так как могут существовать другие встречи, которые не следует удалять.
Потенциальные решения:
Получить последнюю версию данные из базы данных при обработке:
После обработки каждой записи очереди я сохраняю изменения. Это работает для обновлений, но при удалении запись уже исчезает, поэтому я не могу получить идентификатор внешнего собрания, чтобы удалить его из Teamleader.
Умная группировка записей очереди:
Я мог бы группировать связанные записи очереди (добавлять/обновлять/удалять) и обрабатывать их таким образом, чтобы более разумно обрабатывать несколько обновлений, например, игнорировать определенные обновления, если они переопределяются последующими действиями, такими как удаление.Есть ли у кого-нибудь предложения о том, как лучше всего справиться с этой ситуацией, особенно когда речь идет об управлении удалениями и множественными обновлениями одной и той же записи?
Потому что я могу представить, что это общая проблема при синхронизации данных с внешними системами.
Заранее спасибо!
Я уже пробовал получить заказ из базы данных, поэтому всякий раз, когда у меня возникает обновить, это будет работать с предыдущим установленным идентификатором. Но у меня все еще есть проблема с удалением.
Подробнее здесь: https://stackoverflow.com/questions/790 ... f-data-net
Отправка данных во внешний API, добавление/обновление/удаление с помощью снимков данных .NET. ⇐ C#
Место общения программистов C#
1728924339
Anonymous
Я столкнулся с проблемой асинхронной обработки обновлений/удалений записи, которая подвергается нескольким изменениям одновременно.
Сценарий:
Всякий раз, когда в моей системе происходит добавление/обновление/удаление, я помещаю снимок данных в таблицу «очереди». Затем другая служба синхронно обрабатывает эти записи и группирует их. Проблема возникает, когда несколько записей для одной и той же сущности поставлены в очередь одновременно.
Например, мне нужно создать встречу в Teamleader для сделки X. В моей очереди есть следующие 3 записи: :
Обновить — заказ X запланирован на 11 часов.
Обновить — заказ X запланирован на 12 часов.
Удалить — заказ X удален.
Записи создаются одновременно, поэтому мои данные JSON в очереди не отражают изменения по сравнению с более ранними записями в очереди.
Текущая обработка:
Обновление (11 часов) — создает встречу для сделки X (поскольку в полезных данных заказа отсутствует внешний идентификатор встречи). Я сохраняю идентификатор собрания в заказе после создания.
Обновление (12 часов). При этом также создается новое собрание, поскольку ссылка на внешнее собрание (из первого обновления) не отражается в данные очереди еще нет, но они сохранены в базе данных.
Удалить — внешняя ссылка для идентификатора собрания не установлена, поэтому я не знаю, какое собрание удалить. Удаление всех встреч для сделки невозможно, так как могут существовать другие встречи, которые не следует удалять.
Потенциальные решения:
Получить последнюю версию данные из базы данных при обработке:
После обработки каждой записи очереди я сохраняю изменения. Это работает для обновлений, но при удалении запись уже исчезает, поэтому я не могу получить идентификатор внешнего собрания, чтобы удалить его из Teamleader.
Умная группировка записей очереди:
Я мог бы группировать связанные записи очереди (добавлять/обновлять/удалять) и обрабатывать их таким образом, чтобы более разумно обрабатывать несколько обновлений, например, игнорировать определенные обновления, если они переопределяются последующими действиями, такими как удаление.Есть ли у кого-нибудь предложения о том, как лучше всего справиться с этой ситуацией, особенно когда речь идет об управлении удалениями и множественными обновлениями одной и той же записи?
Потому что я могу представить, что это общая проблема при синхронизации данных с внешними системами.
Заранее спасибо!
Я уже пробовал получить заказ из базы данных, поэтому всякий раз, когда у меня возникает обновить, это будет работать с предыдущим установленным идентификатором. Но у меня все еще есть проблема с удалением.
Подробнее здесь: [url]https://stackoverflow.com/questions/79086846/sending-data-to-external-api-add-update-delete-with-snapshots-of-data-net[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия