import org.apache.commons.lang3.StringUtils;\r
import org.apache.http.HttpResponse;\r
import org.apache.http.client.methods.HttpPost;\r
+import org.apache.http.client.methods.HttpRequestBase;\r
import org.apache.http.entity.ByteArrayEntity;\r
import org.apache.http.impl.client.CloseableHttpClient;\r
import org.apache.http.impl.client.HttpClients;\r
+import org.apache.http.util.EntityUtils;\r
import org.jvnet.hk2.annotations.Service;\r
import org.openo.holmes.common.api.entity.ServiceRegisterEntity;\r
import org.openo.holmes.common.config.MicroServiceConfig;\r
@Service\r
public class MSBRegisterUtil {\r
\r
- public boolean register(ServiceRegisterEntity entity) throws IOException {\r
+ public void register(ServiceRegisterEntity entity) throws IOException {\r
+ log.info("start inventory micro service register");\r
+ boolean flag = false;\r
+ int retry = 0;\r
+ while (!flag && retry < 20) {\r
+ log.info("inventory micro service register.retry:" + retry);\r
+ retry++;\r
+ flag = inner_register(entity);\r
+ if (!flag) {\r
+ log.warn("micro service register failed, sleep 30S and try again.");\r
+ threadSleep(30000);\r
+ } else {\r
+ log.info("micro service register success!");\r
+ break;\r
+ }\r
+ }\r
+ log.info("holmes micro service register end.");\r
+ }\r
+\r
+ private void setHeader(HttpRequestBase httpRequestBase) {\r
+ httpRequestBase.setHeader("Content-Type", "text/html;charset=UTF-8");\r
+ httpRequestBase.setHeader("Accept", "application/json");\r
+ httpRequestBase.setHeader("Content-Type", "application/json");\r
+ }\r
+\r
+ private boolean inner_register(ServiceRegisterEntity entity) {\r
CloseableHttpClient httpClient = HttpClients.createDefault();\r
try {\r
ObjectMapper mapper = new ObjectMapper();\r
String content = mapper.writeValueAsString(entity);\r
- HttpPost httpPost = new HttpPost("http://" + MicroServiceConfig.getMsbServerAddr()\r
- + ":8086/openoapi/microservices/v1/services?createOrUpdate=false");\r
+ HttpPost httpPost = new HttpPost(\r
+ MicroServiceConfig.getMsbServerAddr() + "/api/microservices/v1/services?createOrUpdate=false");\r
if (StringUtils.isNotEmpty(content)) {\r
httpPost.setEntity(new ByteArrayEntity(content.getBytes()));\r
}\r
+ this.setHeader(httpPost);\r
HttpResponse response;\r
try {\r
response = httpClient.execute(httpPost);\r
log.warn("Registering the service to the bus failure", e);\r
return false;\r
}\r
- if (response.getStatusLine().getStatusCode() == AlarmConst.RESPONSE_STATUS_OK) {\r
- log.info("Registration successful service to the bus :" + response.getEntity());\r
+ if (response.getStatusLine().getStatusCode() == AlarmConst.MICRO_SERVICE_STATUS_SUCCESS) {\r
+ log.info("Registration successful service to the bus :" + EntityUtils.toString(response.getEntity()));\r
return true;\r
} else {\r
- log.warn("Registering the service to the bus failure");\r
+ log.warn(\r
+ "Registering the service to the bus failure:" + response.getStatusLine().getStatusCode() + " " +\r
+ response.getStatusLine().getReasonPhrase());\r
return false;\r
}\r
+ } catch (IOException e) {\r
+ log.warn("ServiceRegisterEntity:" + entity + " parse failed",e);\r
} finally {\r
- httpClient.close();\r
+ try {\r
+ httpClient.close();\r
+ } catch (IOException e) {\r
+ log.warn("At the time of registering service httpclient close failure",e);\r
+ }\r
+ }\r
+ return false;\r
+ }\r
+\r
+ private void threadSleep(int second) {\r
+ log.info("start sleep ....");\r
+ try {\r
+ Thread.sleep(second);\r
+ } catch (InterruptedException error) {\r
+ log.error("thread sleep error.errorMsg:" + error.getMessage());\r
}\r
+ log.info("sleep end .");\r
}\r
}
\ No newline at end of file