/// <summary> /// 发送单向消息 /// </summary> /// <typeparam name="TContract">契约类型</typeparam> /// <typeparam name="TArgument">参数类型</typeparam> /// <param name="function">消息发送代理</param> /// <param name="argument">发送参数</param> public static void Send <TContract, TArgument>(SendOneWayMessage <TContract, TArgument> function, TArgument argument) where TContract : class { if (function == null) { throw new ArgumentNullException("function"); } bool isSuccess = false; int retryCount = RETRY_COUNT_FOR_FAILED; Exception exception = null; while (!isSuccess && retryCount-- > 0) { try { TContract svc = transporter.GetChannel <TContract>(); function(svc, argument); isSuccess = true; } catch (FaultException ex) { ExceptionHandler.Handle(ex); throw; } catch (Exception ex) { ExceptionHandler.Handle(ex); exception = ex; SendFailedRetryCounter <TContract>(retryCount, exception); } } if (!isSuccess) { SendFailed <TContract>(exception); } }
/// <summary> /// 获取指定服务接口类型的服务通道 /// </summary> /// <typeparam name="TInterface">指定服务接口类型</typeparam> /// <returns>指定服务接口类型的服务通道</returns> public TInterface GetChannel <TInterface>() where TInterface : class { return(_transporter.GetChannel <TInterface>()); }