Hi...So the solution I created (which seems to work), is as
follows:Imports:/*import
com.amazonaws.auth.ClasspathPropertiesFileCredentialsProvider;import
com.amazonaws.regions.Region;import com.amazonaws.regions.Regions;import
com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;import
com.amazonaws.services.dynamodbv2.model.AttributeValue;import
com.amazonaws.services.dynamodbv2.model.PutItemRequest;import
com.amazonaws.services.dynamodbv2.model.PutItemResult;*/I used a mapping
function for the attributes I want to add to DynamoDB like so;/*private
static Map<String, AttributeValue> newSourceItem(Item sourceItem) {       
Map<String, AttributeValue> item = new HashMap<String, AttributeValue>();       
item.put("xxx", new AttributeValue(sourceItem.getXXX()));       
item.put("yyy", new AttributeValue(sourceItem.getYYY()));       
item.put("zzz", new
AttributeValue().withN(String.valueOf(sourceItem.getZZZ())));       
item.put("id", new
AttributeValue().withN(String.valueOf(sourceItem.getId())));               
return item;    }*/In my case, the id is the hash number I used. I did not
add a Hash Range.Now the code to initialise the dbClient follows:/*/* * This
credentials provider implementation loads your AWS credentials * from a
properties file at the root of your classpath. */        dynamoDB = new
AmazonDynamoDBClient(new ClasspathPropertiesFileCredentialsProvider());       
Region apSouthEast2 = Region.getRegion(Regions.AP_SOUTHEAST_2);       
dynamoDB.setRegion(apSouthEast2);*/And lastly the Put method to add it to
DynamoDB:/*PutItemRequest putItemRequest = new PutItemRequest(tableName,
attributeMap);        PutItemResult putItemResult =
dynamoDB.putItem(putItemRequest);        System.out.println("Result: " +
putItemResult);*/Whereas my last Camel attempt was as follows:/*/**      * Send
the array map to the DynamoDB routes.    *       * @param route The route to 
send
it to.   * @param exchange The MSG Exchange.     * @param attributeMap The
Attribute Map to send off to DyanamoDB.  */     private void sendMessage(String
route, Exchange exchange, final Map<String,                     AttributeValue> 
attributeMap)
{               System.out.println("Add item to DynamoDB");                
Exchange
exchange2 = producer.send(route, new Processor() {            public void
process(Exchange exchange) throws Exception {               
exchange.getIn().setHeader(DdbConstants.OPERATION, DdbOperations.PutItem);      
         
exchange.getIn().setHeader(DdbConstants.RETURN_VALUES, "ALL_OLD");              
 
exchange.getIn().setHeader(DdbConstants.ITEM, attributeMap);            }       
});     }*/with the "route" string
being:/*sendMessage("aws-ddb://SourceItems?amazonDDBClient=#ddbClient&amazonDdbEndpoint=ap-southeast-2"
+ "&writeCapacity=10&readCapacity=10", newSourceItem(sourceItem));*/I am no
Camel expert, but it seems the exchange.getIn().setHeader(...) isn't working
as planned?



--
View this message in context: 
http://camel.465427.n5.nabble.com/AWS-CAMEL-DynamoDB-Please-Help-tp5748581p5748605.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to