using YLErp.Abstract; using YLErp.Modules.SwapModule; namespace YLErp.Web.App.KafkaTask { /// /// TRS对冲交易撤单 /// public class HedgingOrderCancelConsumerKafkaTask : IHostedService, IDisposable { private readonly IYcLogger _logger; private readonly CancellationTokenSource _cts = new CancellationTokenSource(); private KafkaConsumerHelper _hedgingOrderCancelConsumer;//对冲交易撤单请求消费者 private string hedgingOrderCancelTopic = string.Empty; private string hedgingOrderCancelTopicGroupId = string.Empty; private IKafkaProduce kafkaProduceHelper; public HedgingOrderCancelConsumerKafkaTask(IKafkaProduce kafkaProduce) { _logger = LogFactory.GetLogger("HedgingOrderCancelConsumerKafkaTask"); hedgingOrderCancelTopic = Environment.GetEnvironmentVariable("KafkaConfig_YiLian_ReqHedgingOrderCancelTopic"); hedgingOrderCancelTopicGroupId = Environment.GetEnvironmentVariable("KafkaConfig_YiLian_ReqHedgingOrderCancelTopicGroupId"); _hedgingOrderCancelConsumer = new KafkaConsumerHelper(hedgingOrderCancelTopicGroupId, hedgingOrderCancelTopic); kafkaProduceHelper = kafkaProduce; } public void Dispose() { _cts.Dispose(); } public Task StartAsync(CancellationToken cancellationToken) { Task.Run(() => ExecuteTask(_cts.Token), _cts.Token); return Task.CompletedTask; } public async Task StopAsync(CancellationToken cancellationToken) { _cts.Cancel(); await Task.CompletedTask; } private async Task ExecuteTask(CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { var service = new TRSHedgingOrderService(OptUserInfo.SystemUser); service.SetKafKaProduce(kafkaProduceHelper); try { await Task.Run(() => { service.ConsumerTrsHedgingOrderCancel(_hedgingOrderCancelConsumer); }, cancellationToken); } catch (Exception ex) { _logger.Error("ConsumerTradePosiResp Exception", ex); } } } } }