почему при запуске моего сервиса появляется сообщение CompletionMessage? - PullRequest
4 голосов
/ 08 августа 2011

Я создал приложение nservice.

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

Ниже показано, как я запускаю свой nservice автобус

_bus = NServiceBus.Configure.With()
                    .Log4Net()
                    .DefaultBuilder()
                    .XmlSerializer()
                    .MsmqTransport()
                        .IsTransactional(true)
                        .PurgeOnStartup(false)
                    .UnicastBus()
                        .ImpersonateSender(false)
                        .LoadMessageHandlers()
                    .CreateBus()
                    .Start();

А вот конфигурация:

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

<UnicastBusConfig DistributorControlAddress="" DistributorDataAddress="">
    <MessageEndpointMappings>
        <add Messages="Demo.Messages" Endpoint="DemoQueueB"/>
    </MessageEndpointMappings>
</UnicastBusConfig>

Когда я запускаю свое приложение. в «DemoQueueB» всегда есть сообщение

<?xml version="1.0"?>
<Messages xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.net/NServiceBus.Unicast.Transport">
    <CompletionMessage>
        <ErrorCode>0</ErrorCode>
    </CompletionMessage>
</Messages>

Так что, с моим приложением что-то не так? Потому что я ничего не отправлял в QueueB. это пустое приложение.

1 Ответ

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

CompletionMessage - это один из внутренних типов сообщений, который NServiceBus использует для управления собой.NServiceBus использует его для своей инициализации, для передачи кодов возврата через метод IBus.Return () и для подтверждения запросов подписки и отмены подписки.

Как правило, вы просто должны полностью игнорировать эти сообщения.

...