gpt4 book ai didi

java - 可以将自定义数据返回给 Kafka Producer

转载 作者:行者123 更新时间:2023-12-01 14:17:42 25 4
gpt4 key购买 nike

我正在学习 kafka,我想将我的应用程序拆分为 2 个微服务。首先将所有来自 KafkaConsumer 的传入消息保存到数据库中,然后通过给定的 ID 选择实体。其次提供 REST api 来保存和获取实体。它们之间的交互用kafka提供。如何使用 kafka 在 REST api 中从数据库接收存储的 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());
}

和 Consumer,将 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-kafka 和 spring-boot。Rest api 有两种方法:POST - 保存我的对象Get - 通过 id 返回保存的对象。可以用 kafka 做还是我必须直接连接这个微服务?谢谢。

最佳答案

不确定我是否完全理解您的问题,但是如果您想向 kafka 发送一条消息,并等待该消息被某个微服务使用和处理,然后该微服务会将一些信息(主键)返回给发送者如果不向您的架构中添加更多内容,您将无法做到这一点。

发送到 kafka 的消息是“即发即弃”的,从发送者的角度来看,您对这条消息会发生什么一无所知(如果、何时、多久以及有多少消费者会消费它。)

在您的场景中,消费者微服务还可以使用另一个 kafka 主题中的主键发送消息,如果您需要该信息,您将使用该主题。

请记住,Kafka 用于解耦您的架构并引入异步消息处理,如果您需要从消费者同步获得响应,您可能使用了错误的解决方案。

关于java - 可以将自定义数据返回给 Kafka Producer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47526511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com