小编Han*_*ari的帖子

Cassandra连接的健康检查(使用hector)?

对于我的应用程序的操作监视,我正在寻找类似于常用的"SQL连接验证"查询

选择1;

在Cassandra,使用Hector驱动程序.我尝试过像Cluster.getKnownPoolHosts()和.getConnectionManager().getActivePools()这样的事情.但是,只有当我真正尝试使用查询访问Cassandra时,它们的状态似乎才会不断更新.

我希望我的运行状况检查独立于任何需要存在的键空间或用户CF,因此只运行"虚拟"查询似乎很困难(针对什么?).当然,它不应占用大量内存或产生任何重大负载.

我可以以某种方式强制Hector更新其连接池状态而不运行真正的查询吗?

(顺便说一句:CQL甚至不接受"SELECT 1"作为有效查询.)

cassandra hector

12
推荐指数
2
解决办法
9985
查看次数

注入(@Inject)字段是否安全发布?

当我在类中使用字段注入时,如下所示:

@Inject
private MyClass myField;
Run Code Online (Sandbox Code Playgroud)

我可以对这个领域的" 安全出版 "状态做出任何假设吗?或者换一种说法,假设MyClass本身是线程安全的,那么使用这个字段时我应该注意哪些并发风险?

我的直觉通常是尽可能创建所有字段final,但这不适用于字段注入.当然,我可以使用构造函数注入,但是我通常最终只需要为代理创建一个额外的"假"no-args构造函数.没有太大问题,但使用现场注入更方便.另一种选择可能是将该字段标记为易变(或甚至使用锁定......),但这是否真的有必要?

JSR-299规范似乎没有回答这个问题.我在像Weld这样的实现上使用CDI.

  • 我注入到该对象被多个线程(它@ApplicationScoped,例如)中使用.我要这个.
  • 我知道如果MyClass是不可变的,安全发布不是一个问题.但我不一定只注入不可变对象.
  • 假设MyClass本身是线程安全的; 这不是我关心的问题.由于Java内存模型的规则,严格关注的是不安全的发布,例如线程看到MyClass的半构造实例的可能性.

java thread-safety cdi weld

9
推荐指数
1
解决办法
1136
查看次数

标签 统计

cassandra ×1

cdi ×1

hector ×1

java ×1

thread-safety ×1

weld ×1