【发布时间】:2023-03-04 07:07:05
【问题描述】:
我正在学习 kafka,我想将我的应用拆分为 2 个微服务。 首先将来自 KafkaConsumer 的所有传入消息保存到数据库并通过给定的 id 选择实体。 其次提供 REST api 来保存和获取实体。 他们之间的交互由 kafka 提供。 如何使用 kafka 从 REST api 中的 db 接收存储的 ID? 这是调用 POST 请求的生产者的示例代码。
public void sendToKafka(MyObject myobject) throws ExecutionException, InterruptedException {
LOGGER.info("sending payload='{}' to topic='{}'", myobject, myTopic);
byte[] bytes = parseObjectToByte(myobject);
ListenableFuture<SendResult<String, byte[]>> resultFuture = kafkaTemplate.send(topicSave, bytes);
SendResult<String, byte[]> result = resultFuture.get();
LOGGER.info(result.toString());
}
和消费者,将 myObject 保存到数据库
@KafkaListener(topics = "${kafka.topic.mytopic}")
public void saveMyObject(byte[] value) {
MyObject myobject = parseToMyObject(value);
LOGGER.info("received myobject='{}'", myobject);
MyObject myobjectSaved = myObjectRepository.insert(myobject);
}
我正在使用带有 spring-boot 的 spring-kafka。 Rest api 有两种方法: POST - 保存 myObject Get - 通过 id 返回保存的对象。 有可能用 kafka 做,还是我必须直接连接这个微服务?谢谢。
【问题讨论】:
标签: java rest spring-boot apache-kafka spring-kafka