随笔- 3  评论- 0  文章- 0 

【笔记】学习NServicbus

NserviceBus的配置相关:(从官网翻译的)
=====================================================
NServicebus的配置
 1.MsmqtransportConfig,这个配置定义了一些消息在传输过程当中的属性。
    例如,发送消息要开启几个队列;以及最大的重试次数(发送消息失败之后会重试继续发几次?)。这个配置默认是没有的,我们需要在<configsections>里面配置。
<section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" />
 <MsmqTransportConfig NumberOfWorkerThreads="1" MaxRetries="5"/>这个配置里面的两个属性
maxretries表示消息处理失败在移交到errorqueue之前会重试几次。这个值如果没有提供的话,默认就为5.
 2.MessageForwardingInCaseOfFaultConfig.这个配置主要是定义消息无法处理的时候或者处理失败的时候将把消息移交到哪里(那个消息队列)去。一般默认的是移交到本机名字叫error的消息队列里,但是我们也可以把这个处理失败的消息移交到远程服务器的消息队列里去。如过是本机消息队列的话一般是这么配置<MessgaeForwardinginCaseOfFaultConfig ErrorQueue="error">(这表示消息处理失败的时候将把消息移到本机的error消息队列里。)如果是远程的话,errorQueue的值一般这么配置,都是基于"queueName@remoteMachineName"这个模板的。就是"消息队列名称@机器名称"。
      如果你没有定义或者配置错误队列的地址,那么NServicebus将启动失败,并且报“Could not find backup configuration section 'MsmqTransportConfig' in order to locate the error queue“的异常。
=====================================================
NServicebus的异常处理:
     NServiceBus自带了一套异常处理机制,你不需要自己去捕获或者处理异常。当异常出现的时候你只需要把异常抛出,当NServiceBus捕获到异常之后,他会自动的去重试处理这个消息5次(这个次数是自定义的),如果5次之后还没有处理成功,就会把这个消息转移到error队列里了。这样我们就可以关注error队列,一旦这个里面有了消息,则表示有处理失败的消息了。我们可以针对error队列里的消息进行单独的处理。另外我们也可以利用工具 ReturnToSourceQueue.exe,这个工具可以把error队列的消息遣送回到它原先的队列里去,让队列再处理一遍。

posted on 2013-03-21 15:29  张伟超  阅读(...)  评论(...编辑  收藏