簡體   English   中英

使用 Apache Camel 和 Java DynamoDB 注釋將項目寫入 DynamoDB

[英]Write item to DynamoDB using Apache Camel with Java Annotations for DynamoDB

情況

我正在嘗試使用Apache Camel aws2-ddb 組件寫入 DynamoDB。 我的路線使用 JPA 從關系數據庫中讀取,對目標 class 執行轉換並將該 class 放入 DynamoDB 表中。

目標 class 看起來像這樣(當然在現實中更復雜)

@DynamoDBTable(tableName = "MyDataTable")
public class MyData {
    private String key;
    private String foo;
    private List<String> bar;

    @DynamoDBHashKey(attributeName = "key")
    public String getKey() { return key; }

    @DynamoDBAttribute(attributeName = "foo")
    public String getFoo() { return foo; }

    @DynamoDBAttribute(attributeName = "bar")
    public List<String> getBar() {  return bar; }

    // ...
}

僅使用 AWS SDK 我會簡單地做這樣的事情:

DynamoDBMapper mapper = new DynamoDBMapper(client);
mapper.save(myDataItem);

然而,aws2-ddb 組件需要該項目作為Map<String, AttributeValue>

如何將帶注釋的 class 轉換為Map<String, AttributeValue> 感覺這應該是顯而易見的事情,但我似乎無法在 AWS SDK 中找到任何內容。

(作為解決方法,我可以在自定義處理器中實現上述DynamoDBMapper代碼,但我更願意使用該組件。)

Unof.netelly 在camel-aws-ddb庫向下鑽取期間,我發現無法使用 DynamoDbMapper。 基本上, aws-dbb / aws2-dbb組件在幕后使用 DdbProducer,在您的情況下,它實際上是一個調用ddbClient putItem 的處理器。

可能的選項是:

  • 使用DynamoDBMapper而不是純ddbClient編寫您自己的組件。
  • 上面提到的自定義處理器,通過在 header 中設置一個項目(如果您不必處理消息本身,甚至是 bean)。
  • 只需使用當前的 API,它允許使用List<Map<String, AttributeValue>>類型的項目,最后將它們放入消息 header 中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM