using System; using System.Collections.Generic; using System.Threading.Tasks; using JiShe.CollectBus.MessageReceiveds; using JiShe.CollectBus.Protocol.Contracts.Interfaces; using MassTransit; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Volo.Abp.Domain.Repositories; namespace JiShe.CollectBus.Consumers { /// /// Batch 一次最多 100 个,最多 10 个并发批次 /// public class ReceivedConsumer: IConsumer> { private readonly ILogger _logger; private readonly IServiceProvider _serviceProvider; private readonly IRepository _messageReceivedEventRepository; /// /// MessageReceivedConsumer /// /// /// /// public ReceivedConsumer(ILogger logger, IServiceProvider serviceProvider, IRepository messageReceivedEventRepository) { _logger = logger; _serviceProvider = serviceProvider; _messageReceivedEventRepository = messageReceivedEventRepository; } 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 _messageReceivedEventRepository.InsertManyAsync(list); } } } }