首页 > 解决方案 > 使用 Apache Camel 描述 DynamoDB 表

问题描述

我正在尝试使用 Apache Camel aws2 DyanamoDB 组件。在那里面有一个操作DescribeTable。我正在尝试。我有一个像这样的骆驼休息 API ->

.post("dynamodb-describe-table")
.route()
.process(new Processor(){

    @Override
    public void process(Exchange exchange) throws Exception {
        exchange.getIn().setHeader("CamelAwsDdbTableName", "user");
    }
    
})
.toD("aws2-ddb://user?accessKey=insert&secretKey=insert&region=us-east-1&operation=DescribeTable")
.endRest();

此操作运行成功,但响应为空。为什么会这样?

标签: javaapache-camelamazon-dynamodb

解决方案


操作DescribeTable不返回正文。所有属性都以Message标题的形式返回。此操作返回的所有标头都列在AWS DynamoDB 文档中。

你有很多选择来创建身体,例如。与 MVEL:

.transform().mvel("{" +
  "'tableSize': exchange.in.headers.CamelAwsDdbTableSize," +
  "'status': 'exchange.in.headers.CamelAwsDdbTableStatus'" +
"}")

或者Processor

.process( exchange ->
    exchange.getIn().setBody(
            new HashMap<String, Object>(){{
                put("tableSize", exchange.getMessage().getHeader("CamelAwsDdbTableSize"));
                put("status", exchange.getMessage().getHeader("CamelAwsDdbTableStatus"));
                // ...
            }}
    )
)

在你toD()和之间endRest()


顺便说一句,我在您的 URI 中看不到任何动态部分,您应该可以使用 just to(),这通常更快。


推荐阅读