Spring 微服务:Kafka事件处理问题[已关闭]

ttcibm8c  于 2022-11-21  发布在  Apache
关注(0)|答案(1)|浏览(109)
    • 已 关闭 * * 。 此 问题 需要 更多 focused 。 当前 不 接受 答案 。
    • 想要 改进 此 问题 吗 ? * * 更新 问题 , 使 其 仅 关注 editing this post 的 一 个 问题 。

6 天 前 关闭 。
Improve this question 格式
我 是 微 服务 的 新手 , 需要 一些 关于 如何 解决 以下 问题 的 建议 。
我 有 两 个 微 服务 , 订单 微 服务 和 交付 微 服务 , 订单 微 服务 通过 Kafka 推动 事件 交付 微 服务 。
我 需要 一些 帮助
1.如何 在 两 个 微 服务 中 跟踪 特定 事件 ? 这 将 有助于 记录 和 跟踪 事件 更改 等 。
为此 , 我 可以 生成 一 个 随机 数 , 并 将 其 添加 到 可 用于 跟踪 的 有效 载荷 中 。
1.假设 订单 微 服务 有 10 个 订单 , 10 个 订单 都 处理 完 了 , 生成 10 个 事件 推 送给 Kafka , 如果 出现 故障 , 该 怎么 处理 ?
我 考虑 为 订单 服务 创建 一 个 错误 队列 , 如果 在 处理 订单 微 服务 端 的 事件 时 出现 任何 错误 , 它 可以 被 推 送到 那里 。 用户 可以 纠正 问题 , 然后 只 重试 这些 事件 。
1.在 交付 微 服务 时 , 如何 确保 特定 事件 不会 被 处理 多次 ?
1.此外 , 如果 在 处理 来自 交付 微 服务 端 的 事件 时 出现 任何 错误 , 应 如何 处理 ?
与 第 二 点 相同 ?
还有 什么 我 需要 考虑 的 情况 吗 ?

wnavrhmk

wnavrhmk1#

1.如何在两个微服务中跟踪特定事件。这将有助于记录和跟踪事件更改等。
为此,通常在生产环境中使用的是实现traceId
1.假设Order微服务有10个订单,全部处理完毕,生成10个事件,推送给Kafka,如果出现故障,该如何处理?
通常实现的是retry template(如果你使用的是spring-boot,或者你正在使用的任何框架中的类似的东西)。它所做的是重试一个设定的次数,处理任何可能的传递错误。如果错误仍然存在,有多种可能性。你可以适当地记录并从给定的偏移重新处理,或者在不太重要的环境中,您可以将事件保存为文件,并构建一个管理RESTful端点,该端点接受该事件,并以与处理Kafka事件相同的方式处理该事件。
1.在交付微服务时,我如何确保特定事件不会被处理超过一次。
这取决于您对每个Kafka消息执行的逻辑。(插入行),则只需根据主键检查唯一性即可(在本例中,将使用order-id或类似的smth),并通过记录警告消息来拒绝添加新数据。否则,一种常见的方法是覆盖以前插入的数据。2如果你把唯一性留给数据库并正确处理异常,这两种方法的性能应该和处理总是唯一的记录一样好。
另一个解决唯一性问题的方法是编辑生成器以仅发送唯一的消息。
1.此外,如果在处理来自交付微服务端的事件时出现任何错误,应如何处理?
见第2号。

相关问题