Camel CQL Component - Запрос с несколькими параметрами - PullRequest
0 голосов
/ 23 января 2019

Я создаю маршрут Camel, который использует данные из Cassandra DB с использованием компонента CQL, и я хочу передать несколько параметров в оператор where.

Как я могу передать несколько параметров для внутреннего построения подготовленной стратегии?

Я проверил в DOC и нашел способ передать один параметр:

rest("cassandra")
        .get()
            .route()
            .routeId("teste")
            .removeHeaders("Camel*")
            .setHeader(Exchange.HTTP_METHOD, simple(HttpMethod.GET.name()))
            .process(e-> e.getIn().setBody("Gabriel")
            .to("cql://localhost:9042/teste?cql=SELECT * FROM teste_table where name = ? ALLOW FILTERING")

Способ выше работает нормально, но я хочу передать более одного параметра.

1 Ответ

0 голосов
/ 23 января 2019

После некоторых попыток я нашел способ сделать это, просто передав массив объектов в обмене в теле, см. Ниже:

import com.datastax.driver.core.LocalDate;
import com.datastax.driver.core.Row;
...
rest("cassandra")
        .get()
            .route()
            .routeId("test-route")
            .removeHeaders("Camel*")
            .setHeader(Exchange.HTTP_METHOD, simple(HttpMethod.GET.name()))
            .process(e-> e.getIn().setBody(new Object[] {"Gabriel", LocalDate.fromYearMonthDay(1994, 10, 25)}))
            .to("cql://localhost:9042/teste?cql=SELECT * FROM teste_table where name = ? and date_of_birth= ? ALLOW FILTERING")
            .process(e -> {
                Row[] rows = e.getIn().getBody(Row[].class);
                for (Row row : rows)
                     System.out.println("name: " + row.getString("name") + ", idade: " + row.getInt("idade"));
            });
...