spring - 如何检查我的服务中的“elasticsearch is down”条件?
问题描述
我有一些服务。我需要从弹性搜索返回数据(如果可用)或从数据库返回:
@Service
class DefaulUserService implements UserService {
private final DbDao dbDao;
private final ElasticsearchDao elasticsearchDao;
DefaultDoctorService(DbDao dbDao, ElasticsearchDao elasticsearchDao) {
this.dbDao= dbDao;
this.elasticsearchDao= elasticsearchDao;
}
@Override
public List<User> findAll() {
if(elasticsearch is down){
return dbDao.findAll();
} else {
return elasticsearchDao.findAll();
}
}
}
如何检查elasticsearch is down
我的服务中的条件?
解决方案
如果它真的宕机了,elasticsearchDao.findAll();
肯定应该抛出一个异常,对吧?
@Service
class DefaultUserService implements UserService {
private final DbDao dbDao;
private final ElasticsearchDao elasticsearchDao;
DefaultDoctorService(DbDao dbDao, ElasticsearchDao elasticsearchDao) {
this.dbDao= dbDao;
this.elasticsearchDao= elasticsearchDao;
}
@Override
public List<User> findAll() {
try {
return elasticsearchDao.findAll();
}
catch(Exception e) {
return dbDao.findAll();
}
}
}
显然,您必须选择一种更合适的异常类型来捕获。
推荐阅读
- r - 即使很少有测试失败,如何在 R 中获得包覆盖率
- vba - 在 PowerPoint 中使用 VBA 删除一张幻灯片上的所有图像
- mysql - 如何将 node.js 连接到我的 SQL 数据库?
- excel - 将 Google Maps XML 中的某些值解析为 Excel 单元格
- scala - 将数据集元素保存到具有指定文件路径的文件中
- python - 如何实时更新 django 模板?
- python - 使用 Colab GPU 时出错,而 CPU 则没有
- java - Hibernate createNativeQuery 在添加实体映射时返回错误结果
- sql - 在 psql 表的特定行插入一条记录
- dax - 使用视觉级别过滤器后如何获取矩阵视觉中的总计数