using JiShe.CollectBus.Common.Models; using JiShe.CollectBus.MongoDB; using JiShe.CollectBus.Protocol.Contracts.Interfaces; using MassTransit; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; namespace JiShe.CollectBus.MQ.Consumer { /// /// Batch 一次最多 100 个,最多 10 个并发批次 /// public class MessageReceivedConsumer( ILogger logger, IServiceProvider serviceProvider, IMongoRepository mongoReceivedRepository) : IConsumer> { public async Task Consume(ConsumeContext> context) { const string protocolType = "Standard"; var protocolPlugin = serviceProvider.GetKeyedService(protocolType); if (protocolPlugin == null) { logger.LogError("协议不存在!"); } else { var list = new List(); foreach (var contextItem in context.Message) { await protocolPlugin.AnalyzeAsync(contextItem.Message); list.Add(contextItem.Message); } await mongoReceivedRepository.InsertManyAsync(list); } } } }