我有一个服务,它主要代理另一个服务器,在其响应中添加一些业务逻辑。所以它只接收一个请求,将类似的请求发送到另一个服务器(应该使用请求附带的特定用户cookie发送),对响应应用一些更改,然后将其发送回用户。
我将vertx与rxjava结合使用,目前我有两个verticle。
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值。
routingContext
到vertx
httpclient客户端
在另一个垂直方向(我不想通过在任何地方添加新的方法参数来更改接口,它应该隐式处理)
headers
在里面
DeliveryOptions
.
把手要求
/
手语
没有modyfing方法签名)?(可能存储在verticle上下文中?)