2012-05-08 2 views
0

При попытке настроить экземпляр шины возникает следующая ошибка.NServiceBus V3 как настроить конечные точки в WPF-приложении

Без названия конечных точек не может быть сгенерирован, пожалуйста, укажите свой собственный конвенции с использованием Configure.DefineEndpointName (...)

Хм, так что я должен сказать о шине отображения конечных точек сообщений. Обычно я использую app.config, чтобы указать это, и он отлично подходит для моего приложения WPF (я не эксперт в WPF).

Он появляется app.config не читается в моем WPF приложения или что-то не так ... Мой стартовый код выглядит следующим образом (который отлично работает в WinForms или консольного приложения)

 Bus = Configure.With() 
      .AutofacBuilder(container) 
      .XmlSerializer() 
      .MsmqTransport().IsTransactional(true).PurgeOnStartup(false) 
      .UnicastBus().ImpersonateSender(false).LoadMessageHandlers() 
      .CreateBus() 
      .Start(); 

Любой предложения ...

В конечном счете, я хотел бы, чтобы сообщение было сопоставлено конечным точкам, которое было сохранено централизованно, чтобы все настольные приложения могли прочитать это при запуске, т.е. центральная БД, к которой имеют доступ все клиенты. Пример того, как настроить шину таким образом, будет оценен.

ответ

1

За ошибки, просто добавьте, что к вашей инициализации:

Bus = Configure.With() 
     .AutofacBuilder(container) 
     .DefineEndpointName("ENDPOINTNAME") 
     .XmlSerializer() 
     .MsmqTransport().IsTransactional(true).PurgeOnStartup(false) 
     .UnicastBus().ImpersonateSender(false).LoadMessageHandlers() 
     .CreateBus() 
     .Start(); 

Это также станет вашим ввода имени очереди.

+0

Спасибо, я должен был упомянуть, что я пробовал это в своем посте. Это меня озадачило. Я создал 3 простых тестовых приложения, консоль, winforms и WPF. Приложение WPF не запустит шину. Конфигурация идентична для других 2 приложений, и шина запускает и отправляет команды на конечную точку, как ожидалось. Что уникально с WPF-приложением и настройка экземпляра NServiceBus? Еще раз спасибо Адам! – CRG

+0

Моя ошибка, я тупо настраивал имена конечных точек одинаково. Классическая ошибка вырезания и вставки. Где приложения консоли и winforms используют соглашение об именах конечных точек по умолчанию - пространство имен. – CRG

3

Чтобы добавить к принятому ответу выше: порядок, который вы называете методами, важен. В моем случае я не мог заставить DefineEndpointName() работать, если он не был непосредственно после Configure.With()

 Bus = Configure.With() 
      .DefineEndpointName("WPFSubscriber") 
      .DefiningEventsAs(t => t.Namespace != null && t.Namespace.StartsWith("MyMessages")) 
      .Log4Net() 
      .DefaultBuilder() 
      .XmlSerializer() 
      .MsmqTransport() 
      .IsTransactional(true) 
      .PurgeOnStartup(false) 
      .UnicastBus(). 
      ImpersonateSender(false) 
      .LoadMessageHandlers() 
      .CreateBus() 
      .Start(); 
+0

Я полностью согласен, порядок важен. – CRG

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

  • Нет связанных вопросов^_^