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
- + "/api/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
return false;\r
}\r
if (response.getStatusLine().getStatusCode() == AlarmConst.MICRO_SERVICE_STATUS_SUCCESS) {\r
- log.info("Registration successful service to the bus :" + response.getEntity());\r
+ log.info("Registration successful service to the bus :" + EntityUtils.toString(response.getEntity()));\r
return true;\r
} else {\r
log.warn(\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 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
+ 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