/// <summary>
        /// 使用NServiceBus作为ESB实现
        /// </summary>
        /// <param name="config"></param>
        /// <param name="isWeb">是否宿主在web环境</param>
        /// <param name="inputQueue">用于接收消息的队列名</param>
        /// <param name="errorQueue">用于放置错误消息的队列名</param>
        /// <param name="maxRetries">最大重试次数</param>
        /// <param name="isTransactional">是否使用事务性队列,默认启用,设为true时maxRetries才有效,但需要注意DTC带来的问题,如:意外的事务合并等</param>
        /// <returns></returns>
        public static ConfigurationWithCastle NServiceBus(this ConfigurationWithCastle config
                                                          , bool isWeb
                                                          , string inputQueue
                                                          , string errorQueue
                                                          , int maxRetries
                                                          , bool isTransactional)
        {
            //初始化bus
            var bus = GetConfigure(isWeb)
                      .CustomConfigurationSource(new ConfigSource(inputQueue, errorQueue, maxRetries))
                      .CastleWindsorBuilder(config.WindsorContainer)
                      .Log4Net()
                      .XmlSerializer()                  //消息xml序列化
                      .MsmqTransport()                  //使用MSMQ
                      .IsTransactional(isTransactional) //是否事务性队列
                      .PurgeOnStartup(false)            //是否启动后清除队列中原有消息
                      .UnicastBus()
                      .ImpersonateSender(false)
                      .LoadMessageHandlers()
                      .CreateBus()
                      .Start();

            //注册异步处理实现
            config.WindsorContainer.Register(Component.For <IAsyncHandle>().ImplementedBy <AsyncHandle>());
            return(config);
        }
 /// <summary>
 /// 使用NServiceBus作为ESB实现
 /// </summary>
 /// <param name="config"></param>
 /// <param name="isWeb">是否宿主在web环境</param>
 /// <param name="inputQueue">用于接收消息的队列名</param>
 /// <param name="errorQueue">用于放置错误消息的队列名</param>
 /// <param name="maxRetries">最大重试次数</param>
 /// <returns></returns>
 public static ConfigurationWithCastle NServiceBus(this ConfigurationWithCastle config
                                                   , bool isWeb
                                                   , string inputQueue
                                                   , string errorQueue
                                                   , int maxRetries)
 {
     return(NServiceBusExtensions.NServiceBus(config, isWeb, inputQueue, errorQueue, maxRetries, true));
 }