Сделайте так, чтобы у клиента была очередь для ответов. Затем клиент может передать адрес этой очереди в свойстве ReplyTo сообщения, отправленного конечному получателю, а получатель поворачивается и разговаривает с этой очередью. Это общий шаблон, и почему у нас есть это встроенное свойство.
Получателю также потребуется разрешение на отправку обратно в эту очередь, если вы используете этот метод в пространствах имен SB (то есть очередь ответов находится в другом пространстве имен) или вы используете дифференцированный контроль доступа, то есть клиент имеет только права на «отправку». в целевую тему / очередь и не хочет, чтобы каждый мог отправлять в свою очередь ответов.
Способ передачи клиентом кратковременного токена получателю, позволяющий ему отправлять ответы, заключается в следующем:
var token =
TokenProvider.CreateSharedAccessSignatureTokenProvider(
[[rulename]], [[key]])
.GetWebTokenAsync([[targetUri]], string.Empty, true,
TimeSpan.FromHours(1))
.GetAwaiter().GetResult();
Имейте правило SAS в вашем пространстве имен или в очереди ответов с разрешением «Отправить» и используйте его для [[rulename]] и [[key]]. [[targetUri]] - это полный URI очереди ответов (с пространством имен). Временной интервал показывает, как долго этот токен будет действителен. Я использую здесь час, но вполне могут быть несколько секунд, минут или день.
Затем вы передаете этот токен вместе с сообщением; он может находиться в (настраиваемом) свойстве сообщения с именем «ReplyToToken».
Получатель берет токен из этого свойства, а затем создает с ним поставщика токенов.
TokenProvider.CreateSharedAccessSignatureTokenProvider(tokenValue)));
Затем вы создаете новый MessagingFactory, используя базовый URI (без пути ) значения ReplyTo и этого поставщика токенов, а затем QueueClient, используя путь значения ReplyTo.
Чтобы поддерживать диалог, вы можете затем удерживать QueueClient и factory в таблице поиска с ключом URI ReplyTo и не воссоздавать путь ответа каждый раз, когда вы получаете сообщение, а лучше брать его из кеша.
person
Clemens Vasters
schedule
05.01.2016