using Confluent.Kafka;
using Confluent.Kafka.Core.Producer;
using SJZY.Track.Application.Services.Warning.Signals;
using SJZY.Track.Domain.Aggregates.TrackDetailsAggregate;
using Volo.Abp.DependencyInjection;
namespace SJZY.Track.Application.Kafka;
///
/// 预警信号发布者
///
public sealed class WarningSignalPublisher : ITransientDependency
{
private readonly IKafkaProducer _producer;
public WarningSignalPublisher(IKafkaProducer producer)
{
_producer = producer;
}
public void PublishWarningSignal(WarningSignalType type, List tracks)
{
foreach (var track in tracks)
PublishWarningSignal(type, track);
}
public void PublishWarningSignal(WarningSignalType type, TrackDetailsIndex track)
{
_producer.Produce(new Message
{
Key = new WarningSignalKey(type, track.OrderId),
Value = WarningSignal.FromTrack(track, type)
});
}
}