using JiShe.CollectBus.Protocol.Contracts.Interfaces;
using MassTransit;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using JiShe.CollectBus.Protocol.Contracts.Models;
using JiShe.CollectBus.MongoDB;
namespace JiShe.CollectBus.RabbitMQ.Consumers
{
///
/// Batch 一次最多 100 个,最多 10 个并发批次
///
public class MessageReceivedConsumer(
ILogger logger,
IServiceProvider serviceProvider,
IMongoRepository mongoReceivedRepository)
: IConsumer>
{
public async Task Consume(ConsumeContext> context)
{
const string protocolType = "StandardProtocol";
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);
}
}
}
}