Java 健康检查最佳实践
Java health checker best practise
我正在使用 Spring 集成将文件加载到 sftp。我有像这样的 SessionFactory:
<bean id="sftpSessionFactory" class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
<property name="host" value="${host}"/>
<property name="port" value="${port}"/>
<property name="user" value="${username}"/>
<property name="password" value="${password}"/>
<property name="knownHosts" value="${known.hosts}"/>
</bean>
我需要每隔几个小时检查一次 sftp 是否正常。这是在健康检查器中使用 DefaultSftpSessionFactory 的正确方法吗?
public class HealthChecker
{
@Autowired
private DefaultSftpSessionFactory sftpSessionFactory;
public String doHealthCheck()
{
try
{
SftpSession sftpSession = sftpSessionFactory.getSession();
if (sftpSession.isOpen())
{
sftpSession.close();
return "OK";
}
}
catch (Exception ex)
{
LOG.error("Can't connect to sftp", ex);
}
return "ERROR";
}
}
在使用 HealthCheck 时,是否有一些我们需要使用的最佳实践?
我认为您的解决方案背后的想法很好,请记住健康检查服务不应该很重。以防万一如果您使用任何监控工具,它会每隔 N seconds/minutes 轮询一次,如果您的健康检查服务很长 运行.
,它可能会不时失败
我也建议使用 Spring 执行器,类似这样的东西:
@Endpoint(id = "sftp")
@Component
@RequiredArgsConstructor
public class SftpEndpoint {
@ReadOperation
public Map<String, Object> sftp() {
}
}
我正在使用 Spring 集成将文件加载到 sftp。我有像这样的 SessionFactory:
<bean id="sftpSessionFactory" class="org.springframework.integration.sftp.session.DefaultSftpSessionFactory">
<property name="host" value="${host}"/>
<property name="port" value="${port}"/>
<property name="user" value="${username}"/>
<property name="password" value="${password}"/>
<property name="knownHosts" value="${known.hosts}"/>
</bean>
我需要每隔几个小时检查一次 sftp 是否正常。这是在健康检查器中使用 DefaultSftpSessionFactory 的正确方法吗?
public class HealthChecker
{
@Autowired
private DefaultSftpSessionFactory sftpSessionFactory;
public String doHealthCheck()
{
try
{
SftpSession sftpSession = sftpSessionFactory.getSession();
if (sftpSession.isOpen())
{
sftpSession.close();
return "OK";
}
}
catch (Exception ex)
{
LOG.error("Can't connect to sftp", ex);
}
return "ERROR";
}
}
在使用 HealthCheck 时,是否有一些我们需要使用的最佳实践?
我认为您的解决方案背后的想法很好,请记住健康检查服务不应该很重。以防万一如果您使用任何监控工具,它会每隔 N seconds/minutes 轮询一次,如果您的健康检查服务很长 运行.
,它可能会不时失败我也建议使用 Spring 执行器,类似这样的东西:
@Endpoint(id = "sftp")
@Component
@RequiredArgsConstructor
public class SftpEndpoint {
@ReadOperation
public Map<String, Object> sftp() {
}
}