public virtual async Task <string> SendMessageAsync(ChatMessage chatMessage)
        {
            chatMessage.SetProperty(nameof(ChatMessage.IsAnonymous), chatMessage.IsAnonymous);
            chatMessage.MessageId = SnowflakeIdrGenerator.Create().ToString();
            // 如果先存储的话,就紧耦合消息处理模块了
            // await Store.StoreMessageAsync(chatMessage);
            var eto = new RealTimeEto <ChatMessage>(chatMessage);

            await EventBus.PublishAsync(eto);

            return(chatMessage.MessageId);
        }
        public virtual async Task HandleEventAsync(RealTimeEto <ChatMessage> eventData)
        {
            Logger.LogDebug($"Persistent chat message.");

            await MessageStore.StoreMessageAsync(eventData.Data);

            // 发送消息
            foreach (var provider in MessageSenderProviderManager.Providers)
            {
                Logger.LogDebug($"Sending message with provider {provider.Name}");
                await provider.SendMessageAsync(eventData.Data);
            }
        }