2015-08-20 1 views
0

Я использую finagle как rest клиентов. В ClientBuilder Я указываю диапазон хостов, но для запроса требуется установка URL-адреса с хостом. Как я могу избежать указания хоста в запросе и позволить finagle выбрать один? Спасибо.Finagle Отправить запрос на случайный сервер в кластере

val client = ClientBuilder().hosts("host1:81,host2:82").codec(Http()).build() 

    val request = RequestBuilder() 
     // .url("http://host1/get") // dont want to specify host 
     // .url("/get") // MalformedURLException: no protocol 
     .buildGet() 

    var resp = client(request) // sent to host specified by url 

ответ

2

Похоже, вы используете модуль finagle-http. Невозможно создать запрос без хоста по URL-адресу, используя RequestBuilder. Тем не менее, вы можете построить Request вручную (или создать свой собственный RequestBuilder для дальнейшего использования)

Я бы рекомендовал, однако, перейти на finagle-httpx модуль (https://github.com/twitter/finagle/tree/develop/finagle-httpx). Он несовместим с finagle-http, но он имеет множество улучшений API и возможность создавать запросы без хоста по URL-адресу среди них, например:

val client = Httpx.client.withTls("my.api") 
    .newService("host1.my.api:443,host2.my.api:443") 

val req = Request("/get") 

val rep = client(req) 
Смежные вопросы