У меня есть модель подписки, и я хочу выполнить логику, связанную с возобновлением, например, выпуск нового счета-фактуры, отправку писем и т.д. Например, пользователь будет покупать подписку сегодня, а продление - через год. Недавно я использовал очередную Azure, и думаю, что он будет применяться для такого обновления.
Можно ли использовать Azure Queue, нажав сообщения, используя BrokeredMessage.ScheduledEnqueueTimeUtc
(http://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.brokeredmessage.scheduledenqueuetimeutc.aspx) для таких долгосрочных запланированных сообщений?
Я использовал его на более короткий срок, например, отправляя уведомления в течение 1 минуты, и он отлично работает.
Таким образом, у меня может быть даже несколько процессов, слушающих очередь, и убедитесь, что только один процесс выполнит логику обновления. Это позволило бы решить множество проблем, связанных с блокировкой, поскольку это своего рода встроенная очередь Azure через лизинг и связанные функции.
Да, вы можете использовать его для долгосрочного планирования, запланированные сообщения имеют те же гарантии, что и обычные. Но есть несколько вещей, о которых вам нужно знать:
ScheduledEnqueueTimeUtc
- это время, когда сообщение будет доступно (в течение сотен миллисекунд) в очереди, но не обязательно доставлено, это зависит от загрузки и состояния очереди. Так что это нормально для бизнес-процессов, но не для использования во времени (миллисекунды). Не проблема в вашем случае, если ваша аннулирование подписки действительно не чувствительна к времени.ScheduledEnqueueTimeUtc
, они невидимы.Исключительно удивительный источник информации о лазурном обмене сообщениями
С технологической точки зрения это прекрасно, но в вашем случае я бы также подумал о других потенциальных проблемах, если вы думаете о годах: