如何在由datastax驱动程序创建的RetryPolicy线程中保留上下文

时间:2019-03-28 14:10:00

标签: cassandra-3.0 datastax-java-driver

我正在通过实现datastax RetryPolicy自定义重试策略。我注意到,触发后,重试策略在由datastax框架创建的新线程中执行。因此,我丢失了上下文,并且无法在原始查询执行和当前重试执行之间进行链接(我的相关上下文数据存储在ThreadLocal上。) 有没有一种方法可以将数据注册/传递到重试策略中,以便能够利用原始查询中的信息? 我的最终目标是能够从原始查询的流程中记录相关的上下文信息。

1 个答案:

答案 0 :(得分:0)

实际上,重试策略方法是在内部驱动程序线程上调用的,因此您不能使用ThreadLocal来共享上下文。

您可以做的是将语句包装在自定义StatementWrapper中,该信息将这些信息存储在最终字段中。