2015-02-10 1 views
0

Я создал таблицу в dynamodb (EU-WEST-1), и я создал маршрут верблюда, чтобы положить полезную нагрузку json в таблицу.Как использовать 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 ошибка проверки обнаружено: Значение нуля в 'пункте' не удовлетворял ограничение : член не должен быть нулевым (Сервис: AmazonDynamoDB; код состояния: 400; код ошибки: ValidationException; Request 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 на конец определения конечной точки.

Смежные вопросы