NServiceBus не публикуется в тестовой системе - PullRequest
1 голос
/ 08 августа 2011

У меня есть следующие настройки:

  • Одна служба с именем CoreHost должна получить ExecuteWorkflowByAttributeCommand, равную Bus.Send, и затем опубликовать WorkflowByAttributeExecuted.

  • Один «клиент», который использует Bus.Send для выполнения команды и подписан на сообщение WorkflowByAttributeExecuted.

Обработчик выглядит следующим образом:

    public void Handle(WorkflowByAttributeCommand message)
    {
        MessageLifetimeLogger.Info("Received WorkflowByAttribute Command", ...);

        var log = _executor.ExecuteWithLog(message.Attribute, 
                                           message.SerializedWorkItem,
                                           message.Id);
        Bus.Publish(new WorkflowByAttributeExecuted(message.Id, log));

        MessageLifetimeLogger.Info("Completed WorkflowByAttribute Command", ...);
    }

На моей машине для разработки он работает нормально, но в нашей тестовой системе этого не происходит.

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

Что меня удивляет, так это то, что журнал выглядит совершенно по-разному на обеих машинах.

Журнал рабочих машин содержит

Received message MHP.Domain.Common.Core.Messaging.WorkflowByAttribute.WorkflowByAttributeCommand, MHP.Domain.Common.Core, Version=0.0.0.1, Culture=neutral, PublicKeyToken=null with ID 6e15d4f7-7aa7-4be3-bd80-e70497bc5051\66585 from sender TestServerQueue@PC-SB-11
Activating: WorkflowByAttributeHandler 
// some log entries generated by the Handle method
Sending message MHP.Domain.Common.Core.Messaging.WorkflowByAttribute.WorkflowByAttributeExecuted, MHP.Domain.Common.Core, Version=0.0.0.1, Culture=neutral, PublicKeyToken=null with ID 6e15d4f7-7aa7-4be3-bd80-e70497bc5051\66587 to destination TestServerQueue@PC-SB-11.
WorkflowByAttributeHandler Done. 

, при этом журнал неработающих машин содержит только

Received message MHP.Domain.Common.Core.Messaging.WorkflowByAttribute.WorkflowByAttributeCommand, MHP.Domain.Common.Core, Version=0.0.0.1, Culture=neutral, PublicKeyToken=null with ID 6e15d4f7-7aa7-4be3-bd80-e70497bc5051\66585 from sender TestServerQueue@PC-SB-11
// some log entries generated by the Handle method

Однако все типы сообщений, по-видимому, успешно зарегистрированы:

Subscribing TestServerQueue@VM-SCRUM-VLOG to message type MHP.Domain.Common.Core.Messaging.WorkflowByAttribute.WorkflowByAttributeExecuted, MHP.Domain.Common.Core, Version=0.0.0.1, Culture=neutral, PublicKeyToken=null |  
Subscribing TestServerQueue@VM-SCRUM-VLOG to message type MHP.Domain.Common.Core.Messaging.WorkflowByAttribute.WorkflowByAttributeCommand, MHP.Domain.Common.Core, Version=0.0.0.1, Culture=neutral, PublicKeyToken=null |  

app.config сервера выглядит как

<MsmqTransportConfig
    InputQueue="CoreHostQueue"
    ErrorQueue="ErrorQueue"
    NumberOfWorkerThreads="1"
    MaxRetries="5" />

<UnicastBusConfig>
    <MessageEndpointMappings>
    </MessageEndpointMappings>
</UnicastBusConfig>

Другой содержит сообщение mappinGS

<MsmqTransportConfig
  InputQueue="TestServerQueue"
  ErrorQueue="ErrorQueue"
  NumberOfWorkerThreads="2"
  MaxRetries="5" />

<UnicastBusConfig>
  <MessageEndpointMappings>
    <add Messages="MHP.Domain.Common.Core.Messaging.WorkflowByAttribute.WorkflowByAttributeCommand, MHP.Domain.Common.Core" Endpoint="CoreHostQueue"/>
    <add Messages="MHP.Domain.Common.Core.Messaging.WorkflowByAttribute.WorkflowByAttributeExecuted, MHP.Domain.Common.Core" Endpoint="CoreHostQueue"/>
  </MessageEndpointMappings>
</UnicastBusConfig>

Ответы [ 2 ]

1 голос
/ 27 декабря 2011

Подписки, где не хранятся в течение длительного времени. Спасибо Андреасу Олунду за помощь!

0 голосов
/ 08 августа 2011

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

Причина этого заключается в том, чтосообщения о подписке, отправленные подписчиком издателю при запуске, содержат эту информацию.

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

...