小吕同学真的不会敲代码 2023-05-18 22:03 采纳率: 57.1%
浏览 15

spring和flask借助Kafka交互,数据格式怎么定?

目前项目预设后端用的spring,因为要调用算法所以也引用了flask框架,spring和flask之间交互用的Kafka消息队列,前端开发人员问我“有哪些数据用Kafka发送,数据格式都是什么?”

在spring后端这边就是获取前端用户输入的各种算法参数(string类型的),然后把参数借助Kafka传递给flask,flask调用模型算法计算完,再把结果值传递回spring,这个数据格式依然是string吗?或者会被转成json? (我瞎说的)我也不懂这些,对Kafka完全不了解

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-05-19 08:24
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 以下回答来自chatgpt:

      回答:

      在使用Kafka队列交互数据时,我们需要确保数据格式的正确性和易于解析性。一种常见的做法是将数据格式化成JSON格式,并在Spring和Flask之间进行传递。以下是实现步骤:

      1. 在Spring后端中,定义一个Kafka Producer类,用于发送数据给Kafka队列。代码示例:
      @Service
      public class KafkaProducerService {
          @Autowired
          private KafkaTemplate<String, String> kafkaTemplate;
      
          public void sendMessage(String topic, String message) {
              kafkaTemplate.send(topic, message);
          }
      }
      
      1. 在Flask框架中,定义一个Kafka Consumer类,用于接收Kafka队列中的数据并进行处理。代码示例:
      from kafka import KafkaConsumer
      
      consumer = KafkaConsumer('topic_name',
                               bootstrap_servers=['localhost:9092'],
                               value_deserializer=lambda m: json.loads(m.decode('utf-8')))
      
      for message in consumer:
          print(message.value)
          # 在这里进行数据处理
      
      1. 在将数据发送到Kafka队列之前,我们需要将数据格式化成JSON格式。在Spring中,可以使用Jackson库将对象转换成JSON字符串。在Flask中,则可以使用Python内置的json库将JSON字符串转换成Python对象。例如:

      在Spring中:

      ObjectMapper objectMapper = new ObjectMapper();
      String jsonString = objectMapper.writeValueAsString(algorithmParams);
      kafkaProducerService.sendMessage("topic_name", jsonString);
      

      在Flask中:

      import json
      
      message_object = json.loads(message.value)
      
      1. 最后,为了确保数据格式正确,我们需要通信双方对于数据格式定义进行严格的协商。在Spring和Flask中,可以定义一个公共的数据格式定义文件,例如JSON Schema文件,明确数据格式的字段和类型信息。这样,在进行数据交互时,就能够确保数据格式的正确性了。

      总结:

      通过Kafka队列让Spring和Flask交互需要进行以下步骤:

      1. 在Spring中定义Kafka Producer类,并发送JSON格式数据到Kafka队列中。
      2. 在Flask中定义Kafka Consumer类,并从Kafka队列中接收JSON格式数据。
      3. 在数据发送和接收过程中,进行JSON格式化和解析。
      4. 在通信前,双方需要严格协商并定义数据格式。

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 5月18日

悬赏问题

  • ¥15 Matlab安装yalmip和cplex功能安装失败
  • ¥15 加装宝马安卓中控改变开机画面
  • ¥15 STK安装问题问问大家,这种情况应该怎么办
  • ¥15 更换了一个新的win10系统,再下载VS时碰到的问题,是C++组件的?
  • ¥15 关于罗技鼠标宏lua文件的问题
  • ¥15 halcon ocr mlp 识别问题
  • ¥15 已知曲线满足正余弦函数,根据其峰值,还原出整条曲线
  • ¥20 无法创建新的堆栈防护界面
  • ¥15 sessionStorage在vue中的用法
  • ¥15 wordpress更换域名后用户图片头像不显示