Конвертировать объект в ByteBuffer - PullRequest
0 голосов
/ 10 июня 2019

Моя ситуация такова, что разработка на spring.boot.version = 1.4.2 не может обновить нашу загрузочную версию (наш сервис очень большой).

Мне нужно использовать Кафку для нашего сервиса.
Поэтому я реализовал эту функцию, используя spring-cloud-stream-binder-kafka.
spring-cloud-stream-binder-kafka:1.1.2.RELEASE поддерживает весеннюю загрузку версии 1.4.6, поэтому я могу реализовать эту функцию.

До сих пор это не плохо.
Но мы используем AWS в наших сервисах, в AWS, как вы знаете, нет kafka.
Поэтому я попытался использовать spring-cloud-stream-binder-kinesis:1.0.0.RELEASE.
Но, к сожалению, версия spring-cloud-stream-binder-kinesis:1.0.0.RELEASE поддерживается поверх bootVersion 2.0.0.

Так что я должен реализовать эту функцию, используя Kinesis Producer Library.
(Я имею в виду https://github.com/awslabs/amazon-kinesis-producer/blob/master/java/amazon-kinesis-producer-sample/src/com/amazonaws/services/kinesis/producer/sample/SampleProducer.java)

Я должен опубликовать объект Java в kinesis, поэтому я должен передать объект Java в data аргумент KinesisProducer.addUserRecord.
Как конвертировать Java Object в ByteBuffer?

1 Ответ

0 голосов
/ 10 июня 2019

Вам нужно сначала преобразовать его в byte[], затем вызвать ByteBuffer.wrap() для этого массива.

Вы могли бы использовать для этого сериализацию Java, но я настоятельно рекомендую использовать некоторую форму сериализации JSON. Это сделает записи легкими для использования другими потребителями, что является одной из причин, по которой стоит использовать что-то вроде Kinesis.

Кроме того, AWS предоставляет управляемую услугу Kafka . Я не использовал его, поэтому не могу сравнить с самоуправляемым кластером Kafka и не знаю, доступен ли он во всех регионах. Но если у вас уже есть инструменты и опыт для использования Kafka, это может быть лучшим выбором для вас.

...