Exemplo n.º 1
0
        public async Task SendAsync(SmsSendEvent sendEvent, CancellationToken cancellationToken = default(CancellationToken))
        {
            //todo 根据 more info 获得优先实现名单(如果没有名单,则从注册清单中获得实现名单)

            //todo 根据实现名单、约束规则和 send event 自身属性,获得最佳实现名单
            List <string> finalServiceNames = new List <string>();

            if (finalServiceNames == null || !finalServiceNames.Any())
            {
                //todo log error info
                return;
            }

            //todo 如果最佳实现名单只有一个实现,直接调用
            if (finalServiceNames.Count == 1)
            {
                //todo get implement func from implement manager by name
                return;
            }

            //todo 如果最佳实现名单为复数个实现,则调用 Roller 获得随机的实现
            var finalServiceName = _roller.GetRendomImplement(finalServiceNames);

            //todo 从 implement client provider 中获得 implement client
            //todo get implement func from implement manager by name

            //todo 调用 implement client 的指定方法(模板方法、Code 方法 还是一般消息方法)
            //todo use implementFunc.Invoke(sendEvent) send message and await
        }
Exemplo n.º 2
0
        public void SendTemplateMessage(string phoneNumber, string templateCode, SmsSendEventMoreInfo moreInfo = null)
        {
            var sendEvent = new SmsSendEvent(phoneNumber, SmsSendEventType.Message, GetLegalMoreInfo(moreInfo));

            Emit(sendEvent);
        }
Exemplo n.º 3
0
        public void SendCode(List <string> phoneNumbers, string code, SmsSendEventMoreInfo moreInfo = null)
        {
            var sendEvent = new SmsSendEvent(phoneNumbers, SmsSendEventType.Message, GetLegalMoreInfo(moreInfo));

            Emit(sendEvent);
        }
Exemplo n.º 4
0
 private void Emit(SmsSendEvent sendEvent)
 {
     Task.Factory.StartNew(async() => await _smsAggregationSender.SendAsync(sendEvent));
 }