BrokerServerService.java 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. package com.yihu.hos.services;
  2. import com.fasterxml.jackson.databind.ObjectMapper;
  3. import com.fasterxml.jackson.databind.node.ObjectNode;
  4. import com.yihu.hos.common.configuration.ApplicationConfiguration;
  5. import com.yihu.hos.common.configuration.ArbiterConfiguration;
  6. import com.yihu.hos.core.net.IPChoiceUtils;
  7. import org.apache.camel.util.InetAddressUtil;
  8. import org.apache.http.Consts;
  9. import org.apache.http.NameValuePair;
  10. import org.apache.http.client.entity.UrlEncodedFormEntity;
  11. import org.apache.http.client.methods.CloseableHttpResponse;
  12. import org.apache.http.client.methods.HttpDelete;
  13. import org.apache.http.client.methods.HttpPost;
  14. import org.apache.http.client.utils.URIBuilder;
  15. import org.apache.http.impl.client.CloseableHttpClient;
  16. import org.apache.http.impl.client.HttpClients;
  17. import org.apache.http.message.BasicNameValuePair;
  18. import org.springframework.beans.factory.DisposableBean;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.stereotype.Component;
  21. import java.io.IOException;
  22. import java.net.URI;
  23. import java.net.URISyntaxException;
  24. import java.util.ArrayList;
  25. import java.util.List;
  26. /**
  27. * @created Airhead 2016/8/1.
  28. */
  29. @Component("brokerServerService")
  30. public class BrokerServerService implements DisposableBean {
  31. @Autowired
  32. private ApplicationConfiguration applicationConfiguration;
  33. @Autowired
  34. private ArbiterConfiguration arbiterConfiguration;
  35. private String hostName;
  36. private String hostAddress;
  37. private int port;
  38. public void brokerServerOnline() {
  39. try {
  40. hostName = InetAddressUtil.getLocalHostName();
  41. hostAddress = IPChoiceUtils.getSourceIP();
  42. port = applicationConfiguration.getPort();
  43. ObjectMapper objectMapper = new ObjectMapper();
  44. ObjectNode objectNode = objectMapper.createObjectNode();
  45. objectNode.put("hostName", hostName);
  46. objectNode.put("hostAddress", hostAddress);
  47. objectNode.put("port", port);
  48. objectNode.put("enable", true);
  49. String brokerServer = objectMapper.writeValueAsString(objectNode);
  50. List<NameValuePair> nameValuePairList = new ArrayList<>();
  51. nameValuePairList.add(new BasicNameValuePair("brokerServer", brokerServer));
  52. CloseableHttpClient httpclient = HttpClients.createDefault();
  53. HttpPost httpPost = new HttpPost(arbiterConfiguration.getServer() + "/brokerServer");
  54. httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairList, Consts.UTF_8));
  55. CloseableHttpResponse response = httpclient.execute(httpPost);
  56. response.close();
  57. } catch (IOException e) {
  58. e.printStackTrace();
  59. }
  60. }
  61. /**
  62. * brokerServer下线时通知
  63. */
  64. public void brokerServerOffline() {
  65. try {
  66. ObjectMapper objectMapper = new ObjectMapper();
  67. ObjectNode objectNode = objectMapper.createObjectNode();
  68. objectNode.put("hostName", hostName);
  69. objectNode.put("hostAddress", hostAddress);
  70. objectNode.put("port", port);
  71. objectNode.put("enable", false);
  72. String brokerServer = objectMapper.writeValueAsString(objectNode);
  73. URI uri = new URIBuilder(arbiterConfiguration.getServer() + "/brokerServer")
  74. .addParameter("brokerServer", brokerServer)
  75. .build();
  76. HttpDelete httpDelete = new HttpDelete(uri);
  77. CloseableHttpClient httpclient = HttpClients.createDefault();
  78. CloseableHttpResponse response = httpclient.execute(httpDelete);
  79. response.close();
  80. } catch (IOException | URISyntaxException e) {
  81. e.printStackTrace();
  82. }
  83. }
  84. @Override
  85. public void destroy() throws Exception {
  86. // this.brokerServerOffline();
  87. }
  88. }