Темы и очереди Azure ServiceBus

Добрый день, ребята, переживаю интересную ситуацию.

У меня есть тема, и у этой темы есть две очереди, и в моем исходном коде я собираюсь отправить сообщение в тему. Но проблема в том, что в одной из очередей сообщение должно быть прочитано только через 24 часа.

Есть ли какая-либо конфигурация в очереди или какое-либо свойство для добавления в отправляемое мной BrokeredMessage?


person Miguel Patreze    schedule 03.04.2018    source источник


Ответы (1)


Вы можете опубликовать / отправить свои сообщения, запланированные для доставки в будущем, указав _ 1_ значение.

Обновление: вы можете использовать Действие правила фильтра в подписке, чтобы установить значение ScheduledEnqueueTimeUtc.

Обновление 2: идея с действием правила фильтрации не работает. Оценка проводится по теме (которая представляет собой отдельную очередь), а не по подписке. Не говоря уже о документации, в которой почти нет подробностей о том, как это сделать.

Альтернативный подход может заключаться в установке TTL по умолчанию для вашей подписки и включении «Надписи сделки по истечении срока действия сообщения». Это переместит любые сообщения с истекшим TTL, равным 24 часам (или любому другому произвольному времени, которое вам нужно), в очередь недоставленных сообщений подписки. Имея это на месте, вы можете настроить «Пересылать мертвые буквенные сообщения в» для очереди, которую ваша конечная точка должна обрабатывать.

person Sean Feldman    schedule 03.04.2018
comment
Но мне нужно запланировать сообщение только для одной из двух подписок, для другой я хочу отправить немедленно - person Miguel Patreze; 03.04.2018
comment
Тогда ты не сможешь этого сделать. Публикация сообщения означает, что его получит любой подписчик. Если вы не введете что-то конкретное для прослушивателя очереди, чтобы отложить сообщение после его получения из подписки, вы мало что сможете сделать. - person Sean Feldman; 03.04.2018
comment
Теперь, подумав об этом, действие правила могло бы быть вариантом. Обновил свой ответ. - person Sean Feldman; 03.04.2018
comment
хмммм я понял, а как это работает? все сообщения, которые идут на подпись, будут запланированы? Могу ли я настроить это действие правила с помощью портала Azure или только с помощью кода? - person Miguel Patreze; 03.04.2018
comment
Код или инструменты. QueueExplorer Cogin может это сделать. ServiceBusExplorer пока может только визуализировать. - person Sean Feldman; 03.04.2018
comment
хм, хорошо, я понял, сейчас я думаю, что воспользуюсь веб-работой, потому что у меня мало времени, но я изучу твой ответ позже, спасибо, парень! - person Miguel Patreze; 03.04.2018
comment
Вы дали мне идею для публикации в блоге, так что спасибо. Он будет на weblogs.asp.net/sfeldman. - person Sean Feldman; 03.04.2018
comment
Хороший парень, я рад, что подарил тебе идею! Я сохраню ссылку и свяжусь с ней, когда публикация выйдет. - person Miguel Patreze; 03.04.2018
comment
@MiguelPatreze после того, как немного покопался в действиях, это не тот подход, который будет поддерживаться. Я обновил ответ другим вариантом. Если вы считаете, что это не то, что вам нужно, не стесняйтесь снимать пометку с моего сообщения как действительного ответа. Я все еще собираюсь подробнее изучить действия, чтобы выяснить, что реально возможно. - person Sean Feldman; 05.04.2018