ServiceFlowEventService.java 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. package com.yihu.hos.services;
  2. import com.fasterxml.jackson.core.JsonProcessingException;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. import com.fasterxml.jackson.databind.node.ObjectNode;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.jms.core.JmsMessagingTemplate;
  7. import org.springframework.stereotype.Component;
  8. import javax.jms.Queue;
  9. /**
  10. * @created Airhead 2016/8/2.
  11. */
  12. @Component
  13. public class ServiceFlowEventService {
  14. @Autowired
  15. private JmsMessagingTemplate jmsMessagingTemplate;
  16. @Autowired
  17. private Queue queue;
  18. @Autowired
  19. private ObjectMapper objectMapper;
  20. /**
  21. * 当外界组件通知一个新的processor处理器被定义时,该事件被触发。
  22. *
  23. * @param serviceFlow 本次processor处理器变化,所涉及的服务流程Code标识。
  24. * @param packageName processor处理器定义涉及的class包名
  25. * @param className processor处理器定义涉及的class类名
  26. * @param path processor处理器定义涉及的class内容,如果zookeeper数据结构中class分片存储,在业务级接口层面上也进行了合并
  27. */
  28. public void processorAdded(String serviceFlow, String packageName, String className, String path) {
  29. sendMsg("processorAdded", serviceFlow, packageName, className, path);
  30. }
  31. /**
  32. * 当外界组件通知一个已有的processor处理器data部分发生变化时,该事件被触发。
  33. */
  34. public void processorDataChanged(String serviceFlow, String packageName, String className, String path) {
  35. this.sendMsg("processorDataChanged", serviceFlow, packageName, className, path);
  36. }
  37. public void processorDataDeleted(String serviceFlow, String packageName, String className, String path) {
  38. this.sendMsg("processorDataDeleted", serviceFlow, packageName, className, path);
  39. }
  40. /**
  41. * 当外界组件通知一个新的RouteDefine路由被定义时,该事件被触发
  42. */
  43. public void routeDefineAdded(String serviceFlow, String packageName, String className, String path) {
  44. this.sendMsg("routeDefineAdded", serviceFlow, packageName, className, path);
  45. }
  46. /**
  47. * 当外界组件通知一个已有的RouteDefine路由定义被改变时,主要就是路由定义内容被改变时,该事件被触发。
  48. */
  49. public void routeDefineChanged(String serviceFlow, String packageName, String className, String path) {
  50. this.sendMsg("routeDefineChanged", serviceFlow, packageName, className, path);
  51. }
  52. /**
  53. * 当外界组件通知一个已有的RouteDefine路由定义被删除时,该事件被触发。
  54. */
  55. public void routeDefineDelete(String serviceFlow, String packageName, String className) {
  56. this.sendMsg("routeDefineDelete", serviceFlow, packageName, className, null);
  57. }
  58. private void sendMsg(String event, String serviceFlow, String packageName, String className, String path) {
  59. ObjectNode objectNode = objectMapper.createObjectNode();
  60. objectNode.put("event", event);
  61. objectNode.put("serviceFlow", serviceFlow);
  62. objectNode.put("packageName", packageName);
  63. objectNode.put("className", className);
  64. objectNode.put("path", path);
  65. try {
  66. String msg = objectMapper.writeValueAsString(objectNode);
  67. this.jmsMessagingTemplate.convertAndSend(this.queue, msg);
  68. } catch (JsonProcessingException e) {
  69. e.printStackTrace();
  70. }
  71. }
  72. }