Используя образец pub/sub, мне удалось получить несколько экземпляров одного и того же консольного приложения, чтобы прочитать все сообщения, отправленные издателем. То, что я сделал WHAS это:Конфигурация Nservicebus в WPF
namespace Subscriber1
{ общественного класса EndpointConfig: IConfigureThisEndpoint, AsA_Server { }
public class OverrideInputQueue : IWantCustomInitialization
{
public void Init()
{
Configure
.Instance
.Configurer
.ConfigureComponent<MsmqTransport>(NServiceBus.ObjectBuilder.ComponentCallModelEnum.None)
.ConfigureProperty(p => p.InputQueue, Guid.NewGuid());
}
}
}
Как настроить приложение WPF, чтобы иметь несколько экземпляров все читать уведомления от издателя?
Использование приведенного выше кода не делает этого для меня, потому что эти строки кода никогда не будут удалены.
В моем приложении WPF я ссылаться на хосте NServiceBus, я добавляю это в окне коды позади:
public Window1()
{
InitializeComponent();
this.Title = App.AppId.ToString();
var bus = NServiceBus.Configure.With()
.DefaultBuilder()
.XmlSerializer()
.MsmqTransport()
.IsTransactional(true)
.PurgeOnStartup(false)
.UnicastBus()
.ImpersonateSender(false)
.LoadMessageHandlers()
.CreateBus()
.Start();
}
и я поставил я «OverrideInputQueue: IWantCustomInitialization» -часть в моей конечной конфигурации.
Но, как я уже сказал, часть никогда не попадает. В результате, когда вы запускаете два экземпляра приложения, они поочередно выбирают сообщение, отправленное издателем. Я хочу, чтобы оба экземпляра получили ВСЕ сообщения.
Что я пропустил?
/Johan
Вы создали конкурирующего потребителя. По какой причине вы хотите только одну очередь, а не одну на абонента? –
Точно. Это проблема. Почему не выполняется метод Init класса OverrideInputQueue: IWantCustomInitialization. Это происходит в моем консольном приложении, и каждый экземпляр получает свою очередь uniqeu. Итак, есть что-то с моей настройкой в wpf, это FUBAR. Я просто не знаю, что. –