У меня NServiceBus работает в одном процессе, но я хотел бы отправить сообщение A, но получить только сообщение B. Однако я думаю, поскольку сопоставления конечных точек сообщений используются как для отправки, так и для получения, процесс пытается обрабатывать оба сообщения - A и Б. Каким-либо образом обойти эту проблему? Оба сообщения помещаются в одну и ту же очередь, исходя из того факта, что один процесс может прослушивать только одно ограничение NSB очереди.
Отправка и получение NServiceBus в одном процессе
comment
Я думаю, что нужна дополнительная информация, чтобы помочь. Это команды или события? Отличаются ли сообщения A и B типами? У вас есть обработчик сообщения A в вашем процессе, и если нет, что вы имеете в виду, что ваш процесс его получает?
- person Phil Sandler   schedule 01.11.2013
comment
A и B - разные типы .NET, некоторые команды некоторые события, проблема существует во всех случаях. У меня загружены обработчики только для сообщения B, так как я получаю только и отправляю только A. Итак, когда мое сообщение A получено, я не получаю зарегистрированного обработчика
- person Sergey Barskiy   schedule 01.11.2013
comment
Взгляните на: stackoverflow.com/questions/12283490/
- person Phil Sandler   schedule 02.11.2013
comment
Можете ли вы поделиться кодом и конфигурацией, которые у вас есть? в какую конечную точку вы отправляете сообщение A? не могли бы вы подробнее описать вариант использования?
- person Sean Farmar   schedule 02.11.2013
comment
Ссылка Фила верна. Это говорит о другом ограничении - один процесс может прослушивать только одну очередь. Это ограничение и привело меня к текущему вопросу.
- person Sergey Barskiy   schedule 04.11.2013
comment
У меня нет файлов конфигурации - вся конфигурация выполняется в коде, чтобы обеспечить централизованное управление всей конфигурацией.
- person Sergey Barskiy   schedule 04.11.2013
comment
Еще немного о сценарии использования. Теперь я использую перегрузку Send (), которая принимает пункт назначения в качестве параметра, поэтому я могу получить пункт назначения на основе конфигурации экземпляра шины. Другими словами, код выглядит следующим образом. Is (this.Mode = ModeA) this.Bus ›Отправить (destinationForModeA, сообщение). Я также настраиваю очередь ввода в коде, используя Condfigure.DegineEndpointName (defineBasedOnModeEndoiintName). Я заставил демонстрацию работать, но я чувствую, что это потребовало гораздо больше усилий, чем следовало бы, потому что я не могу прослушивать несколько конечных точек из одного экземпляра и фильтровать сообщения для каждой конечной точки.
- person Sergey Barskiy   schedule 04.11.2013
Ответы (1)
Вы можете использовать два разных домена приложений.
Заявление
один процесс может прослушивать только одну очередь
Не совсем правильно. Правильнее сказать
один домен приложения может прослушивать только одну очередь
Поскольку у вас может быть несколько доменов приложений для каждого процесса, у вас могут быть процессы с момента, прослушивающие несколько очередей
person
Simon
schedule
25.11.2013