Очереди служебной шины Windows Azure - MessageSender или QueueClient? - PullRequest
5 голосов
/ 17 февраля 2012

Предыстория:

Несколько месяцев назад (когда я был новичком в очередях Azure и инструментах SDK там), я погуглил «как мне это сделать» и «как мне это сделать» ...вот где я сегодня:

  1. Я использую QueueClient (Microsoft.ServiceBus.Messaging - Microsoft.ServiceBus.dll) для получения сообщений из очереди Azure.

  2. В той же программе я также использую MessageSender (из того же пространства имен и DLL) для отправки сообщений в очередь Azure.

  3. Моя программа должна отслеживать Dictionary<string, QueueClient> и Dictionary<string, MessageSender> - что сложнее, чем должно быть.

Теперь, когда я больше знаком с Azure SDK ..Я понимаю, что класс QueueClient может отправлять и получать ... Так почему я отслеживаю 2 объекта, когда первый может выполнять оба?

Вопрос:

Есть ли причина использовать класс MessageSender вместо класса QueueClient?

Если мне нужно отправлять и получать, не должен ли я просто использовать класс QueueClient?

Ответы [ 2 ]

9 голосов
/ 20 февраля 2012

Мы выставили два разных объекта для поддержки симметрии и простоты использования.Как вы знаете, у нас есть Темы / Подписки , а также Очереди .Если вы просто используете Queues, вы можете создать QueueClient и выполнить все необходимые для этого операции.Но, скажем, вы позже хотели перейти к модели публикации / подписки на тему / подписку.Программирование с использованием общих MessageSender и MessageReciever позволит вам изменить базовую топологию и не будет нуждаться в изменении какого-либо кода (только URL-адреса / имена ).Таким образом, вы можете написать код, который может работать как в очереди, так и в сценариях тем / подписок.

6 голосов
/ 17 февраля 2012

ОК - я должен был сначала отразить DLL ... нашел ответ.

QueueClient - это класс, в котором просто есть объект MessageSender и объект MessageReceiver внутри.Поэтому ответ «Нет, у вас не должно быть 2 объектов для одного и того же»Приведенный выше объект «InternalSender» имеет тип MessageSender.

...