2010-03-17 6 views
1

Я начинаю работу с NServiceBus и задаюсь вопросом о выборке Pubsub.Несколько подписчиков в NServiceBus

Мое намерение состояло в том, чтобы запустить несколько экземпляров Publisher1 и получить сообщение, отправленное издателем. Я также взломал издателя только для отправки сообщений типа eventMessage.

Но если я запустил издатель и три экземпляра Subscriber1, только один из них получит сообщение за раз.

Почему это так? Это настройка конфигурации или что-то еще?

Это то, что я пытался, которая возвращает исключение «исключение при запуске конечной точки, ошибка вырублено Причины:... Не могу настроить свойство перед компонентами настроены Пожалуйста, позвоните„Настройка“первым»:

using NServiceBus; 

namespace Subscriber1 
{ 
    public class EndpointConfig : IConfigureThisEndpoint, AsA_Server 
    { 
    } 

    public class OverrideInputQueue : IWantCustomInitialization 
    { 
     public void Init() 
     { 
      Configure 
       .Instance 
       .Configurer 
       .ConfigureProperty<NServiceBus.Config.MsmqTransportConfig>(t => t.InputQueue, "testQueue"); 
     } 
    } 
} 

/J

ответ

1

NServiceBus предполагает, что у вас есть один входной очереди для каждого процесса. Убедитесь, что каждый из ваших абонентов настроен с уникальной входной очередью. Если не все три будут опросать ту же очередь, что и поведение, которое вы описываете.

Для этого вам, вероятно, придется скопировать вставку sub1 в 3 разных папки, изменив app.config и запустив их.

Надеюсь, это поможет!

+0

Да, так оно и есть. Но тогда мне нужно как-то настроить очередь. Правильно?? Я нашел что-то вроде этого: Configure.Instance.Configurer.ConfigureProperty (t => t.InputQueue, yourDynamicQueue); .. но не смог заставить его работать. Любые советы? –

+0

Да, если вы не можете скопировать вставку папки и изменить отдельный файл app.config, вам придется установить ее программно. Посмотрите здесь: http://tech.groups.yahoo.com/group/nservicebus/message/6378 Можете ли вы дать более подробную информацию о том, чего вы пытаетесь достичь, со всем этим? Если речь идет о распределении нагрузки, вы должны посмотреть на использование дистрибьютора: http://nservicebus.com/Distributor.aspx –

+0

Я хочу, чтобы несколько экземпляров одного и того же клиента получали все сообщения, когда происходят определенные события. Возможно, когда кто-то создает клиента, все клиенты получают новости о нем. –

0

Вы должны использовать this-

Configure.Instance.Configurer.ConfigureProperty<NServiceBus.Unicast.Transport.Msmq.MsmqTransport>(msmq => msmq.InputQueue, "SomeQueueHere"); 

Убедитесь, что вы используете MsmqTransport и не MsmqTransportConfig, как вы упомянули.

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