36 lines
1.1 KiB
C#
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)
|
|
});
|
|
}
|
|
}
|