Neo4jClient:向Cypher请求添加任意HTTP头?

时间:2014-02-11 09:03:48

标签: http-headers neo4jclient

我正在尝试基于每个请求为Neo4jClient的传出Cypher请求添加自定义HTTP标头。我的意思是每个请求的基础是HTTP头的内容取决于当前会话中的(用户)。

这个想法是负载平衡器将解释此标头,以便它始终将请求重定向到Neo4j集群中的从属服务器,其中当前会话中的用户数据已映射到内存,从而提高性能

例如,我可能会在用户的会话中保留特定从属的地址,并将HTTP标头Neo4j-slave: <address>添加到负载均衡器的传出请求中。然后它会将此请求重定向到正确的从属。

我不确定Neo4jClient是否在构建时考虑到了这种可扩展性;从它的外观来看,如果我不想改变现有的代码,我将不得不在非虚方法中复制很多代码。

我一直在考虑将IHttpClient作为GraphClient的切入点。毕竟,我可以将我的实现传递给GraphClient的构造函数,它接收传出的HttpRequestMessage,所以我可以在路上修改它)但我认为这仅适用于仅依赖于{的修改{1}}本身(或某个地方,但我想避免这种情况)。

我也一直在研究HttpRequestMessage作为将其他参数传递给ThreadLocal的方法,但我不确定如果涉及异步方法,这些参数是否正常工作。

是否有一种或多或少的方法可以挂钩Neo4jClient并添加此标题?

谢谢!

1 个答案:

答案 0 :(得分:0)

我想不出一个当前这样做的好方法,但是如果你以一种干净的方式向IGraphClient添加所需的可扩展性,我会接受一个拉取请求,我们可以将它包含在已出版的图书馆。