Vertx: передача дополнительной переменной между статьями - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть служба, которая в основном прокси-сервер другого сервера, добавляя бизнес-логики в его ответы.Таким образом, он просто получает запросы, отправляет аналогичный запрос на другой сервер (должен быть отправлен с определенным файлом cookie пользователя, который приходит с запросом), применяет некоторые изменения к ответу и отправляет его обратно пользователю.

Я использую vertxс помощью rx-java, и в настоящее время у меня есть две вертикали.

Одна из них принимает запросы на отдых, и в качестве части обработки этот запрос вызывает метод для другой вертикали через evenBus:

 router.route().handler(routingContext -> {
     someService.handleRequest()
                .subscribe(res -> ...send response...);
 }

И где-то в handleRequest есть звонок на другую вертикалку:

     eventBus.rxSend(address, message, deliveryOptions); 

Другая вертикалка прослушивает этот адрес и отправляет запрос на другой сервер:

 eventBus.consumer(address)
         .toObservable()
         .subscribe(message -> {
             response = anotherService.handleMessage(message);
             message.reply(response.body());
         });

И где-то вhandleMessage он вызывает vertx httpclient, отправляя запрос другому серверу:

response = client.get(...);

Этот запрос должен содержать значение cookie из начального запроса, полученного в первой вертикали с контекстом маршрутизации.

Что такоеправильный способ передать значение cookie из routingContext в vertx httpclient в другой строке?(Я не хочу менять интерфейсы, добавляя новый параметр метода везде, он должен обрабатываться неявно)

Насколько я понимаю, лучший способ передачи некоторого дополнительного значения между вертикалами - это использование headers in DeliveryOptions.Но как правильно и безопасно хранить его между вызовами сервисов (например, передавать его в handleRequest / handleMessage без подписи метода модификации) (возможно, хранить его в контексте вертикали?)

...