2015-03-23 3 views
2

У меня есть несколько обработчиков сообщений (IHandleMessage), обрабатывающих разные сообщения в проекте. Сообщения не используются обработчиками с разных конечных точек. Они потребляются с конечной точки, указанной в EndpointConfig или с конечной точки, с именем, аналогичным пространству имен проекта. Как я могу обрабатывать обработчики сообщениями в соответствии с набором конечных точек, определенных в разделе MessageEndpointMappings?NServiceBus: Как настроить различные обработчики сообщений для обработки сообщений с разных конечных точек в MessageEndpointMappings

Например, у меня есть два типа сообщений. Message1 и Message 2 в проектах Контракты и два обработчика (IHandleMessage), Message1Handler и Message2Handler в обработчиках проектов.

Я использую транспорт RabbitMq NServiceBus. Я хочу, чтобы эти обработчики потребляли сообщения из своих соответствующих очередей сообщений, т. Е. Message1Handler из Контракта. Очередь сообщений1 и Message2Handler из Контракта.

<MessageEndpointMappings> 
     <add Assembly="Contracts" Type="Contracts.Message1" Endpoint="Contracts.Message1" /> 
     <add Assembly="Contracts" Type="Contracts.Message2" Endpoint="Contracts.Message2" /> 
    </MessageEndpointMappings> 

Эти сопоставления конечных точек в проекте Handler не работают. Сообщения не расходуются. Сообщения либо потребляются из очереди обработчика (такие же, как пространство имен проекта), либо EndpointName, упомянутое в EndpointConfig.cs.

Каково использование MessageEndpointMappings в случае обработчиков?

Я использую NServiceBus 5.2.0

+0

MessageEndpointMapping настраивает, где сообщения должны быть отправлены * на основе типа сообщения. Это не влияет на получение. Поведение, которое вы сейчас наблюдаете, является правильным. Если вам нужны обработчики для обработки разных очередей, вам нужны две разные конечные точки. В настоящее время у вас есть только один. –

+0

@AlexeyZimarev, чтобы уточнить, MessageEndPointMappings указывает, откуда приходит сообщение в случае событий, и укажите, куда должно идти сообщение в случае команды. –

+0

Спасибо, Алексей и Янник за ваш ответ. – Nikhil

ответ

0

Спасибо Алексей, Яник и Джона за помощью.

Упомянем ответ на вопрос:

сообщения посылаются в соответствии с отображениями в MessageEndpointMappings. Этот раздел не играет никакой роли в способе получения сообщений. Сообщения принимаются в конечной точке, установленной в EndpointConfig.cs (или в очереди, аналогичной пространству имен проекта).

Смежные вопросы