将对象转换为 ByteBuffer
Convert object to ByteBuffer
我的情况是在spring.boot.version = 1.4.2 上开发,无法升级我们的引导版本(我们的服务太大了)。
我的服务需要使用 Kafka。
所以我使用 spring-cloud-stream-binder-kafka
.
实现了这个功能
spring-cloud-stream-binder-kafka:1.1.2.RELEASE
支持 spring 引导版本 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 对象传递给 KinesisProducer.addUserRecord
的 data
参数。
那么,如何将 Java Object
转换为 ByteBuffer
?
您需要先将其转换为 byte[]
,然后对该数组调用 ByteBuffer.wrap()
。
您可以使用Java序列化来做到这一点,但我强烈建议使用某种形式的JSON 连载。这将使记录很容易被其他消费者使用,这是首先使用像 Kinesis 这样的东西的原因之一。
此外,AWS 确实提供了 managed Kafka service。我没有用过,所以无法与self-managed Kafka 集群进行比较,也不知道它是否在所有地区都可用。但如果您已经具备使用 Kafka 的工具和经验,它可能是您更好的选择。
我的情况是在spring.boot.version = 1.4.2 上开发,无法升级我们的引导版本(我们的服务太大了)。
我的服务需要使用 Kafka。
所以我使用 spring-cloud-stream-binder-kafka
.
实现了这个功能
spring-cloud-stream-binder-kafka:1.1.2.RELEASE
支持 spring 引导版本 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 对象传递给 KinesisProducer.addUserRecord
的 data
参数。
那么,如何将 Java Object
转换为 ByteBuffer
?
您需要先将其转换为 byte[]
,然后对该数组调用 ByteBuffer.wrap()
。
您可以使用Java序列化来做到这一点,但我强烈建议使用某种形式的JSON 连载。这将使记录很容易被其他消费者使用,这是首先使用像 Kinesis 这样的东西的原因之一。
此外,AWS 确实提供了 managed Kafka service。我没有用过,所以无法与self-managed Kafka 集群进行比较,也不知道它是否在所有地区都可用。但如果您已经具备使用 Kafka 的工具和经验,它可能是您更好的选择。