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); } }