我目前正在使用Spring Kafka Consumer API开发Spring Boot应用程序。
我进入某个主题的每条消息都需要转换为具有其他主题其他属性的新对象类型。目前,这些其他主题尚未开发,我们正在使用内存数据的模拟版本来处理请求。
例如,一条新的“购物订单”消息到达,但是我正在使用模拟的“ Customer”对象和模拟的“ item”对象来处理订单。计划是使用真实的客户主题和真实的项目主题。
此外,当前,该应用程序仅是用于获取新订单的Spring Kafka侦听器。侦听器调用一个spring bean方法,该方法处理订单并创建一个新对象,该对象使用与我上面提到的相同的模拟方法写入另一个名为customer-order的输出主题。
我们目前正在考虑改进此应用程序的体系结构。我一直在阅读卡夫卡流。我在网上阅读的关于流的文档仅采用简单的示例,例如字数统计,连接等。由于对流的了解有限,因此我不打算使用诸如计算总数等功能。
我已经想到了该体系结构的一些选择...
您有什么建议? 1,2或3?将Streams用于这种解决方案是一个好主意吗?将这种实现方式转换为使用Kafka流媒体有什么好处?还是我最好还是和2呆在一起??
答案 0 :(得分:0)
数字1对我来说听起来很奇怪。您可以通过交互式查询保留KafkaStreams应用程序公开状态存储,但这看起来更像是2。您还必须考虑如何部署实例,并确保Spring部分和KafkaStreams之间的共分区。部分。
在Kafka Streams中完全执行此操作不会出现任何问题,除非您有一些非常复杂的逻辑无法使用当前的API来实现,但我惊讶地发现您无法做到这一点。实际上,您所描述的内容听起来像是它的常规应用程序(警告是不了解其他需求,例如时间,预期数量等)。
好处:
缺点:
这不是一个完整的列表,但这是我脑海中最重要的一点。