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) }); } }