我的情况是在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
?
答案 0 :(得分:0)
您需要先将其转换为byte[]
,然后在该数组上调用ByteBuffer.wrap()
。
您可以使用Java序列化来执行此操作,但我强烈建议使用某种形式的JSON序列化。这将使记录易于被其他消费者使用,这就是首先使用Kinesis之类的原因之一。
此外,AWS确实提供了managed Kafka service。我没有使用过它,因此无法与自我管理的Kafka集群进行比较,也不知道它是否在所有地区都可用。但是,如果您已经具备使用Kafka的工具和经验,那么对您来说可能是一个更好的选择。