LogQuartzComponent.java 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package com.crm.rely.backend.configuration;
  2. import com.alibaba.fastjson.JSON;
  3. import com.crm.rely.backend.aspect.LogType;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.jms.core.JmsTemplate;
  6. import org.springframework.scheduling.annotation.Scheduled;
  7. import org.springframework.stereotype.Component;
  8. import java.util.HashMap;
  9. import java.util.Map;
  10. import java.util.Queue;
  11. import java.util.concurrent.ConcurrentLinkedQueue;
  12. /**
  13. * 日志定时发送服务
  14. */
  15. @Component
  16. public class LogQuartzComponent {
  17. @Autowired
  18. private JmsTemplate jmsTemplate;
  19. @Autowired
  20. private BaseActiveMqConfiguration baseAcitveMqConfiguration;
  21. /**
  22. * 日志内存队列
  23. */
  24. // public static Queue<Map<String,Map<String, Map<Long, Map<LogType, Object>>>>> logQueue = new ConcurrentLinkedQueue<>();
  25. public static Queue<Map<String, Map<Long, Map<LogType, Object>>>> logQueue = new ConcurrentLinkedQueue<>();
  26. /**
  27. * 向队列中添加日志
  28. *
  29. * @param log
  30. */
  31. // public static void add(Map<String, Map<Long, Map<LogType, Object>>> log,String url) {
  32. // Map<String,Object> map= new HashMap<>();
  33. // map.put(url,log);
  34. // logQueue.add(map);
  35. // }
  36. public static void add(Map<String, Map<Long, Map<LogType, Object>>> log) {
  37. logQueue.add(log);
  38. }
  39. /**
  40. * 每五秒先activemq发送操作日志
  41. *
  42. * @throws Exception
  43. */
  44. @Scheduled(cron = "*/5 * * * * ?")
  45. public void activeMqSendByFive() throws Exception {
  46. /**
  47. * 取队列第一个 并删除 如果队列为空 返回null 用于下列判断
  48. */
  49. // Map<String,Map<String, Map<Long, Map<LogType, Object>>>> object = logQueue.poll();
  50. Map<String, Map<Long, Map<LogType, Object>>> object = logQueue.poll();
  51. while (object != null) {
  52. jmsTemplate.convertAndSend(baseAcitveMqConfiguration.logQueue(), JSON.toJSONString(object));
  53. object = logQueue.poll();
  54. }
  55. }
  56. }