我有一个服务,该服务主要代理另一台服务器,在其响应中添加一些业务逻辑。因此,它只接收一个请求,将类似的请求发送到另一台服务器(应与请求一起提供的特定用户cookie一起发送),对响应进行一些更改,然后将其发送回用户。
我正在将vertx与rx-java一起使用,目前有两个顶点。
其中一个接受其余请求,并且在处理此请求的过程中,会通过evenBus
在另一个顶点上调用方法:
router.route().handler(routingContext -> {
someService.handleRequest()
.subscribe(res -> ...send response...);
}
在handleRequest
中的某个地方有另一个顶点的呼叫:
eventBus.rxSend(address, message, deliveryOptions);
另一个verticle侦听此地址并将请求发送到另一个服务器:
eventBus.consumer(address)
.toObservable()
.subscribe(message -> {
response = anotherService.handleMessage(message);
message.reply(response.body());
});
在handleMessage
中的某个地方,它调用vertx httpclient
向另一个服务器发出请求:
response = client.get(...);
此请求应包含来自具有路由上下文的第一个顶点中收到的初始请求的cookie值。
将Cookie值从routingContext
传递到另一个顶点的顶点httpclient
的正确方法是什么? (我不想在各处添加新的方法参数来更改接口,应该对其进行隐式处理)
据我了解,在顶点之间传递某些附加值的最佳方法是使用headers
中的DeliveryOptions
。
但是在服务调用之间存储它的正确和安全的方法是什么(例如,将其传递给handleRequest
/ handleMessage
而无需修改方法签名)(可能存储在垂直上下文中?)