我正在尝试基于每个请求为Neo4jClient的传出Cypher请求添加自定义HTTP标头。我的意思是每个请求的基础是HTTP头的内容取决于当前会话中的(用户)。
这个想法是负载平衡器将解释此标头,以便它始终将请求重定向到Neo4j集群中的从属服务器,其中当前会话中的用户数据已映射到内存,从而提高性能
例如,我可能会在用户的会话中保留特定从属的地址,并将HTTP标头Neo4j-slave: <address>
添加到负载均衡器的传出请求中。然后它会将此请求重定向到正确的从属。
我不确定Neo4jClient是否在构建时考虑到了这种可扩展性;从它的外观来看,如果我不想改变现有的代码,我将不得不在非虚方法中复制很多代码。
我一直在考虑将IHttpClient
作为GraphClient
的切入点。毕竟,我可以将我的实现传递给GraphClient
的构造函数,它接收传出的HttpRequestMessage
,所以我可以在路上修改它)但我认为这仅适用于仅依赖于{的修改{1}}本身(或某个地方,但我想避免这种情况)。
我也一直在研究HttpRequestMessage
作为将其他参数传递给ThreadLocal
的方法,但我不确定如果涉及异步方法,这些参数是否正常工作。
是否有一种或多或少的方法可以挂钩Neo4jClient并添加此标题?
谢谢!
答案 0 :(得分:0)
我想不出一个当前这样做的好方法,但是如果你以一种干净的方式向IGraphClient
添加所需的可扩展性,我会接受一个拉取请求,我们可以将它包含在已出版的图书馆。