Отправка и получение NServiceBus в одном процессе

У меня NServiceBus работает в одном процессе, но я хотел бы отправить сообщение A, но получить только сообщение B. Однако я думаю, поскольку сопоставления конечных точек сообщений используются как для отправки, так и для получения, процесс пытается обрабатывать оба сообщения - A и Б. Каким-либо образом обойти эту проблему? Оба сообщения помещаются в одну и ту же очередь, исходя из того факта, что один процесс может прослушивать только одно ограничение NSB очереди.


person Sergey Barskiy    schedule 01.11.2013    source источник
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