NServiceBus SqlTransport — невозможно разрешить тип сообщения для отправки

ОБНОВЛЕНИЕ Я обнаружил проблему. Я не наследовал ICommand, поэтому добавил соглашение, однако теперь получаю следующее исключение:

Целевая очередь «Возмещение» не найдена. Возможно, вы неправильно настроили назначение для этого типа сообщений (Reimbursement.Messages.Commands.RequestForReimbursementCommand, Reimbursement.Messages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null) в MessageEndpointMappings раздела UnicastBusConfig в файле конфигурации. Также может случиться так, что данная очередь просто еще не создана или была удалена.

Я оцениваю NServiceBus для нашей компании, используя SqlTransport, и столкнулся с проблемой конфигурации.

Вот мой app.config для моего отправителя:

<configuration>
  <configSections>
    <section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
    <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
  </configSections>
  <MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />  
  <startup> 
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <appSettings>
    <add key="NServiceBus/Outbox" value="true"/>
  </appSettings>
  <connectionStrings>
    <add
      name="NServiceBus/Transport"
      connectionString="Data Source=INLS-03466\ANABOLIC; Initial Catalog=CMS; Integrated Security=True;"/>
    <add
      name="NServiceBus/Persistence"
      connectionString="Data Source=INLS-03466\ANABOLIC; Initial Catalog=CMS; Integrated Security=True;"/>
    <add
      name="NServiceBus/Transport/Reimbursement"
      connectionString="Data Source=INLS-03466\ANABOLIC; Initial Catalog=Reimbursement; Integrated Security=True;"/>
  </connectionStrings>
  <UnicastBusConfig>
    <MessageEndpointMappings>
      <add Assembly="Reimbursement.Messages" Endpoint="Reimbursement" />
    </MessageEndpointMappings>
  </UnicastBusConfig>
</configuration>

Когда я иду, чтобы отправить команду, я получаю следующее исключение:

Не удалось найти назначение для сообщения типа Reimbursement.Messages.Commands.RequestForReimbursementCommand. Проверьте раздел конфигурации этой конечной точки на наличие записи либо для этого конкретного типа сообщения, либо для его сборки.

Отправитель ссылается на сборку Reimbursement.Messages, поэтому я не уверен, почему он не может решить эту проблему.

Любая помощь будет здорово!


person Marco    schedule 14.05.2015    source источник


Ответы (2)


Сообщение The destination queue '*' could not be found. обычно появляется, когда служба хочет подписаться на издателя, но публикация еще не запущена, поэтому она создала свои очереди.

Конечная точка создает только свои собственные очереди, но не очереди, на которые она подписана, или очереди других служб, которым она отправляет сообщения.

Сообщение No destination could be found for message type обычно появляется, когда в конфигурации не определен пункт назначения, нет совпадений в соглашении о сообщениях или не наследуется правильный интерфейс (ICommand, IEvent или IMessage).

person Ramon Smits    schedule 15.05.2015

Не знаю, почему, но я удалил/повторно добавил свою ссылку на внешний проект сообщений, и теперь он работает.

person Marco    schedule 14.05.2015