Camel CQL 组件 - 多参数查询
Camel CQL Component - Query with multiple parameters
我正在创建一个使用 CQL 组件使用来自 Cassandra DB 的数据的 Camel 路由,我想将多个参数传递给 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")
上面的方法没问题,但是我想传多个参数
经过一些重试,我找到了一种方法,只需在 body 的交换中传递一个对象数组,如下所示:
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"));
});
我正在创建一个使用 CQL 组件使用来自 Cassandra DB 的数据的 Camel 路由,我想将多个参数传递给 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")
上面的方法没问题,但是我想传多个参数
经过一些重试,我找到了一种方法,只需在 body 的交换中传递一个对象数组,如下所示:
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"));
});