В настоящее время мы рассматриваем концентраторы событий Azure как механизм для отправки сообщений фоновым процессорам. В настоящее время используются системы очередей.
Большинство процессоров записывают данные в базы данных SQL Server, и эти записи заключаются в транзакциях.
Концентраторы событий позиционируются как канал связи с возможностью однократного использования, поэтому следует ожидать дублирования сообщений. EventProcessorHost
- рекомендуемый API на стороне чтения, который автоматизирует управление арендой и создание контрольных точек с помощью хранилища BLOB-объектов Azure.
Но у нас есть идея для некоторых наиболее важных процессоров реализовать контрольную точку самостоятельно, используя таблицу SQL Server внутри той же базы данных, и записать контрольную точку внутри той же транзакции процессора. Это должно дать нам надежную гарантию доставки ровно один раз, когда это необходимо.
Если пока игнорировать управление арендой (просто запускайте по одному процессору на раздел), является ли контрольная точка на основе SQL хорошей идеей? Есть ли другие недостатки, кроме необходимости работать на нижнем уровне API и самостоятельно обрабатывать контрольные точки?