BrokerServerService.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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. String brokerServer = objectMapper.writeValueAsString(objectNode);
  49. List<NameValuePair> nameValuePairList = new ArrayList<>();
  50. nameValuePairList.add(new BasicNameValuePair("brokerServer", brokerServer));
  51. CloseableHttpClient httpclient = HttpClients.createDefault();
  52. HttpPost httpPost = new HttpPost(arbiterConfiguration.getServer() + "/brokerServer");
  53. httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairList, Consts.UTF_8));
  54. CloseableHttpResponse response = httpclient.execute(httpPost);
  55. response.close();
  56. } catch (IOException e) {
  57. e.printStackTrace();
  58. }
  59. }
  60. /**
  61. * brokerServer下线时通知
  62. */
  63. public void brokerServerOffline() {
  64. try {
  65. ObjectMapper objectMapper = new ObjectMapper();
  66. ObjectNode objectNode = objectMapper.createObjectNode();
  67. objectNode.put("hostName", hostName);
  68. objectNode.put("hostAddress", hostAddress);
  69. objectNode.put("port", port);
  70. String brokerServer = objectMapper.writeValueAsString(objectNode);
  71. URI uri = new URIBuilder(arbiterConfiguration.getServer() + "/brokerServer")
  72. .addParameter("brokerServer", brokerServer)
  73. .build();
  74. HttpDelete httpDelete = new HttpDelete(uri);
  75. CloseableHttpClient httpclient = HttpClients.createDefault();
  76. CloseableHttpResponse response = httpclient.execute(httpDelete);
  77. response.close();
  78. } catch (IOException | URISyntaxException e) {
  79. e.printStackTrace();
  80. }
  81. }
  82. @Override
  83. public void destroy() throws Exception {
  84. // this.brokerServerOffline();
  85. }
  86. }