У меня есть приложение Grails. Я использую amazon dynamodb для определенного требования, к которому обращаются, и записи добавляются другим приложением. Теперь мне нужно получить всю информацию из таблицы DynaModb в таблицу PostgreSQL. В Dynamodb более 10000 записей, но пропускная способность
Read capacity units : 100
Write capacity units : 100
В BuildConfig.groovy я определил плагин
compile ":dynamodb:0.1.1"
В config.groovy у меня есть следующая конфигурация
grails {
dynamodb {
accessKey = '***'
secretKey = '***'
disableDrop = true
dbCreate = 'create'
}
}
Код у меня выглядит примерно так
class book {
Long id
String author
String name
date publishedDate
static constraints = {
}
static mapWith = "dynamodb"
static mapping = {
table 'book'
throughput read:100
}
}
Когда я пытаюсь что-то вроде book.findAll(), я получаю следующую ошибку
AmazonClientException: Unable to unmarshall response (Connection reset)
И когда я попытался уменьшить количество записей, попробовав что-то вроде book.findAllByAuthor() (который также имеет более 1000 записей), я получаю следующую ошибку
Caused by ProvisionedThroughputExceededException: Status Code: 400, AWS Service: AmazonDynamoDB, AWS Request ID: ***, AWS Error Code: ProvisionedThroughputExceededException, AWS Error Message: The level of configured provisioned throughput for the table was exceeded. Consider increasing your provisioning level with the UpdateTable API.
Мне нужно получить все записи в dynamodb, несмотря на ограничение пропускной способности, и сохранить их в таблице postgres. Есть ли способ сделать это?
Я очень новичок в этой области, заранее спасибо за помощь.
После некоторых исследований я наткнулся на Google Guava. Но даже для использования Guava RateLimiter не будет фиксированного количества раз, когда мне нужно будет отправить запрос о том, сколько времени это займет. Поэтому я ищу решение, которое удовлетворит мои требования.