2015-02-10 60 views
0

我已經創建了dynamodb(EU-WEST-1)表並且創建了表,並且我創建了一個將json有效載荷放入表的camel路徑。如何使用camel-ddb來保存json有效載荷

我的路線是這樣的:

String dynamoDbEndpoint = String.format("aws-ddb://tablename?accessKey=%s&secretKey=RAW(%s)&tableName=tablename&amazonDdbEndpoint=dynamodb.eu-west-1.amazonaws.com",awsAccessKey,awsSecretKey); 
from("direct:ipg-queue").to(dynamoDbEndpoint) 

我得到的錯誤信息:

com.amazonaws.AmazonServiceException:1驗證錯誤檢測:在 '項目' 值null不能滿足約束:成員不能爲null(服務:AmazonDynamoDB;狀態代碼:400;錯誤代碼:ValidationException;請求ID:0AVSR54LRTOG3U0TTC5B1QO4KBVV4KQNSO5AEMVJF66Q9ASUAAJG)

示例有效負載爲:

{"accountNumber":"123456789","customerName":"John Smith","id":"8422b9e0-739b-4d19-9291-037b68344068"} 

表示爲字符串。

我在做一些愚蠢的事,但不能弄明白......

回答

0

因此,原來我太傻了。你只需要在交換中設置CamelAwdDbItem頭。我增加了後續的處理模塊,以我的路線發電機分貝端點之前和離開我去......

.unmarshal() 
.json(JsonLibrary.Gson, Map.class) 
.process((Exchange exchange) -> { 
    Map body = (Map) exchange.getIn() 
          .getBody(); 

    Map<String, AttributeValue> newBody = new HashMap(); 

    for(Object key : body.keySet()) { 
     newBody.put(key.toString(), new AttributeValue(body.get(key).toString())); 
    } 

    exchange.getIn().setHeader("CamelAwsDdbItem", newBody); 
}) 

我也把&operation=PutItem到端點定義的結束。

相關問題