2017-01-17 10 views
2

Я пишу транзакции в поток Kinesis (используя AWS SDK, JAVA), но putRecord не работает с причиной ошибки Marshalling. Я попытался отправить простую строку (вместо моего сложного объекта), но все равно получаю ту же ошибку. Ниже приведен фрагмент stacktrace.Kinesis Stream PutRecord Fail: Не удалось отправить запрос JSON

AWS SDK версия: 1.11.76

com.amazonaws.SdkClientException: Unable to marshall request to JSON: com.fasterxml.jackson.dataformat.cbor.CBORGenerator.getOutputContext()Lcom/fasterxml/jackson/core/json/JsonWriteContext; 
at com.amazonaws.services.kinesis.model.transform.PutRecordRequestMarshaller.marshall(PutRecordRequestMarshaller.java:85) 
at com.amazonaws.services.kinesis.AmazonKinesisClient.putRecord(AmazonKinesisClient.java:1365) 

ответ

4

Решенный путем удаления Джексона Завис из моего пакета. Причина: Конфликт между моей зависимостью зависимости от Jackson vs AWS SDK от Jackson. Клиент Kinesis использует Джексона для сортировки. Я использовал последнюю версию Джексона, которая вызывала конфликт зависимости.

+1

был такой же проблема с describeStream API, также решено путем удаления Джексона зависимость моего модуля , – AmitW

0

Другое решение здесь состоит в том, чтобы убедиться, что ваша включенная версия Jackson и одна Amazon включена в Kinesis по умолчанию, не противоречат друг другу.

В Джексоне произошли серьезные изменения, и если вы вручную включите более новую версию, но версия AWS SDK, используемая вами, использует более старую версию с нарушением изменений, тогда вы создадите конфликт при запуске проекта. Или наоборот.

Таким образом, решение заключается в том, чтобы либо модернизировать ваш AWS SDK, либо понизить ваш клиент Jackson. Я обеспечить версии каждого API, который работал для меня с libs.gradle выдержки:

ext.versions = [ 
    spring: '4.3.5.RELEASE', 
    awsServerlessJavaContainer: '0.4', 
    jackson: '2.8.6' 

]

ext.libs = [ 
    dynamoDbLocal: 'com.amazonaws:DynamoDBLocal:1.11.0.1', 
    aws: [ 
     dynamodb: 'com.amazonaws:aws-java-sdk-dynamodb:1.11.100', 
     lambda: 'com.amazonaws:aws-lambda-java-core:1.1.0', 
     lambdaEvents: 'com.amazonaws:aws-lambda-java-events:1.3.0', 
     kinesis: 'com.amazonaws:amazon-kinesis-client:1.7.3', 
     sns: 'com.amazonaws:aws-java-sdk-sns:1.11.115', 
    ], 
    awsServerlessJavaContainer: [ 
      spring: "com.amazonaws.serverless:aws-serverless-java-container-spring:${versions.awsServerlessJavaContainer}" 
    ], 
    guava : 'com.google.guava:guava:18.0', 
    jackson: [ 
      databind: "com.fasterxml.jackson.core:jackson-databind:${versions.jackson}", 
      cbor: "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:${versions.jackson}" 
    ], 

] 

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

  • Нет связанных вопросов^_^