Я конвертирую приложение, которое использует MSMQ для использования интерфейса с адаптерами, чем может обрабатывать либо MSMQ, либо служебную шину (либо на премьере, либо в лазурных версиях). Одним из способов использования MSMQ приложения была функция инспектора конфигурации, чтобы определить, что система имеет соответствующие привилегии для выполнения определенных действий. Он использует System.Messaging.MessageQueue.CanRead
, чтобы убедиться, что мы можем успешно прочитать заданную очередь, которая важна для приложения (это была частая ошибка конфигурации клиентов).Что такое служебная шина, эквивалентная CanMead MSMQ?
Лучший эквивалент в Service Bus для меня не ясен. Моя первая мысль о подходе состояла в том, чтобы попытаться выполнить QueueClient.Peek()
и поймать любые последующие исключения. Метод Peek не предлагает параметр таймаута, поэтому я могу только надеяться, что это произойдет быстро. Я бы предпочел использовать таймаут, чтобы я мог заставить его быстро вернуться в вероятный сценарий, что в настоящее время нет сообщений для чтения. Существует Receive(TimeSpan serverWaitTime)
, где я могу пройти в крошечное время ожидания, но я думаю, что это потребует от меня использовать транзакцию и прервать ее, если я получаю сообщение. Это заблокировало бы очередь, когда я предпочел бы не делать этого.
Я надеюсь, что есть лучший вариант, который я пропустил.
На данный момент такой функции нет. –
Когда вы создаете ресивер, вам нужно указать строку подключения пространства имен + sas. Если вы предоставите ключ sas, который не разрешает разрешение на чтение в очереди, вы получите исключение – Thomas
@Thomas, это сработало нормально. Если вы хотите включить его в качестве ответа, я отмечу его принятым. Извините за такой поздний ответ. – DannyMeister