track/src/SJZY.Track.Application/Kafka/WarningSignalPublisher.cs

36 lines
1.1 KiB
C#

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;
/// <summary>
/// 预警信号发布者
/// </summary>
public sealed class WarningSignalPublisher : ITransientDependency
{
private readonly IKafkaProducer<WarningSignalKey, WarningSignal> _producer;
public WarningSignalPublisher(IKafkaProducer<WarningSignalKey, WarningSignal> producer)
{
_producer = producer;
}
public void PublishWarningSignal(WarningSignalType type, List<TrackDetailsIndex> tracks)
{
foreach (var track in tracks)
PublishWarningSignal(type, track);
}
public void PublishWarningSignal(WarningSignalType type, TrackDetailsIndex track)
{
_producer.Produce(new Message<WarningSignalKey, WarningSignal>
{
Key = new WarningSignalKey(type, track.OrderId),
Value = WarningSignal.FromTrack(track, type)
});
}
}