我创建了一个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发送任何东西。 这是一个空的应用程序。
答案 0 :(得分:6)
CompletionMessage是NServiceBus用于管理自身的内部消息类型之一。 NServiceBus使用它来初始化自己,通过IBus.Return()方法传递返回代码,以及确认订阅和取消订阅请求。
通常,您应该完全忽略这些消息。