将对象转换为ByteBuffer

时间:2019-06-10 10:57:30

标签: amazon-web-services spring-cloud bytebuffer kinesis

我的情况是在spring.boot.version = 1.4.2上进行开发,无法升级我们的启动版本(我们的服务非常庞大)。

我需要使用Kafka来提供服务。
因此,我使用spring-cloud-stream-binder-kafka实现了此功能。
spring-cloud-stream-binder-kafka:1.1.2.RELEASE支持Spring Boot版本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的{​​{1}}自变量。
那么,如何将KinesisProducer.addUserRecord转换为Java Object

1 个答案:

答案 0 :(得分:0)

您需要先将其转换为byte[],然后在该数组上调用ByteBuffer.wrap()

可以使用Java序列化来执行此操作,但我强烈建议使用某种形式的JSON序列化。这将使记录易于被其他消费者使用,这就是首先使用Kinesis之类的原因之一。

此外,AWS确实提供了managed Kafka service。我没有使用过它,因此无法与自我管理的Kafka集群进行比较,也不知道它是否在所有地区都可用。但是,如果您已经具备使用Kafka的工具和经验,那么对您来说可能是一个更好的选择。