Если я планирую сообщение в будущем, используя что-то вроде этого:
d = datetime.utcnow() + timedelta(minutes=5)
task = {"some": "object"}
sbs.send_queue_message(
qn,
Message(
task,
broker_properties={'ScheduledEnqueueTimeUtc': d}
)
)
Тогда есть ли способ просмотреть / удалить запланированные сообщения? send_queue_message
ничего не возвращает, а receive_queue_message
по понятным причинам не возвращает предметы, которые должны быть поставлены в очередь позже - поэтому я не могу достать его, например, до delete_queue_message
.
Похоже, что команда Azure знает об этом сценарии использования, поскольку в очередях хранилища есть что-то вроде этой функции: https://azure.microsoft.com/en-gb/blog/azure-storage-queues-new-feature-pop-receipt-on-add-message/
По сути, мне нужно иметь возможность запланировать сообщение, которое будет поставлено в очередь позже, но его можно отменить. В идеале я хотел бы также иметь возможность просматривать все будущие запланированные задачи, но было бы достаточно просто сохранить идентификатор, который можно использовать для последующего удаления сообщения из очереди.
Пользовательский интерфейс Azure также показывает количество активных / запланированных сообщений, что, по-видимому, предполагает, что должен быть какой-то способ просмотреть эти запланированные!
Будет ли для этого лучше использовать хранилище в очереди? Или у служебной шины есть какой-то подход, который может работать? ScheduledEnqueueTimeUtc
кажется более гибким, чем тайм-аут видимости в хранилище очереди, поэтому было бы неплохо придерживаться его, если смогу.