电子围栏推送服务
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

82 lines
2.9KB

  1. using Confluent.Kafka;
  2. using Newtonsoft.Json;
  3. using System.Reflection.PortableExecutable;
  4. using TelpoPush.Fence.Worker.Models.Enum;
  5. using TelpoPush.Fence.Worker.Models.MqTemplates;
  6. using TelpoPush.Fence.Worker.Models.PushTemplates;
  7. namespace TelpoPush.Fence.Worker.Service.Mq
  8. {
  9. public class MqProcessMessage
  10. {
  11. private readonly ILogger<MqProcessMessage> _logger;
  12. private readonly MessageProducer _messageProducer;
  13. public MqProcessMessage(ILogger<MqProcessMessage> logger, MessageProducer producer)
  14. {
  15. _logger = logger;
  16. _messageProducer = producer;
  17. }
  18. public async Task ProcessProperty(string imei, BaseModel model, HeadersDto headers)
  19. {
  20. List<TopicModel> ls = new List<TopicModel>();
  21. ls.Add(new TopicModel()
  22. {
  23. Topic = "topic.push.property",
  24. Headers = _messageProducer.CreateHeader(new Dictionary<string, int>
  25. {
  26. {MqHeader.DataType,headers.DataType.Value }
  27. })
  28. });
  29. await _messageProducer.ProduceAsync(ls, model);
  30. _logger.LogInformation($"【成功】围栏告警推送(topic.property):IMEI<{imei}>,pushData:{JsonConvert.SerializeObject(model)}");
  31. }
  32. //推送服务
  33. public async Task ProcessPushService(object model,string imei)
  34. {
  35. List<TopicModel> ls = new List<TopicModel>();
  36. ls.Add(new TopicModel()
  37. {
  38. Topic = "topic.push",
  39. Headers = _messageProducer.CreateHeader(new Dictionary<string, int>
  40. {
  41. {MqHeader.DataType,(int)MqDataType.AlarmInfo }
  42. })
  43. });
  44. await _messageProducer.ProduceAsync(ls, model);
  45. _logger.LogInformation($"【成功】围栏告警推送(topic.push):IMEI<{imei}>,pushData:{JsonConvert.SerializeObject(model)}");
  46. }
  47. public async Task ProcessWxAlarm(PushWxTemplate model, string fenceId, string timeString)
  48. {
  49. List<TopicModel> ls = new List<TopicModel>();
  50. ls.Add(new TopicModel()
  51. {
  52. Topic = "topic.push.wx",
  53. Headers = _messageProducer.CreateHeader(new Dictionary<string, int>
  54. {
  55. {MqHeader.DataType,(int)MqDataType.AlarmInfo },
  56. })
  57. });
  58. var objData = new
  59. {
  60. messageId = string.Format("{0:yyyyMMddHHmmssffff}", DateTime.Now),
  61. topic = string.Join(",", ls.Select(e => e.Topic)),
  62. time = timeString,
  63. data = model
  64. };
  65. await _messageProducer.ProduceAsync(ls, objData);
  66. _logger.LogInformation($"【成功】围栏告警推送(topic.push.wx):IMEI<{model.imei}>,pushData:{JsonConvert.SerializeObject(model)}");
  67. }
  68. }
  69. }