gpt4 book ai didi

java - 使用哪个 HTTP 动词来触发 Kafka 消息的发布

转载 作者:行者123 更新时间:2023-11-30 01:49:05 25 4
gpt4 key购买 nike

背景我需要为我们团队中的开发人员和产品所有者实现一种方法,以便能够在查询 Spring Boot 应用程序的数据库后触发一些 Kafka 消息的重新发布。将查询数据库以获取数据,但不会执行任何修改。因此该操作对应用程序持有的资源没有影响。

潜在的解决方案我正在考虑实现 REST 端点来实现这一目标。我知道这不是通过 REST 实现的良好用例,因为应用程序持有的资源没有“状态转移”。所以...

问题

  1. 除了 REST 端点之外,还有其他关于实现此目的的替代方法的建议吗?

  2. 如果我通过 REST 端点实现它,我应该使用哪个 HTTP 动词?

(我已经检查过,但在之前的任何帖子中都没有找到任何此类性质的答案。)

最佳答案

Which HTTP verb to use to trigger publication of Kafka messages?

您可以通过查看 HTTP 方法的语义并确定哪个方法适合您的用例来回答这个问题。

对于此示例,合理的候选者是 GETPOST。 (从技术上讲,您可以考虑 HEAD,它是 GET 的一种特殊情况 - 我将在这里忽略它)。

需要理解的重要区别是 GET 语义包括 safe ;描述是“有效只读”,但重要的是它的含义。

The purpose of distinguishing between safe and unsafe methods is to allow automated retrieval processes (spiders) and cache performance optimization (pre-fetching) to work without fear of causing harm.

自动检索意味着即使没有商业动机,您也可能会看到 GET 请求。如果没问题,那么使用 GET 就可以了——而且当请求通过不可靠的网络发送时,它甚至还有一些优势。

另一方面,如果重新发布“成本高昂”或者只能“有意”进行,那么 POST 是更合适的选择。

在浏览器中的网页上下文中想象这一点可能会有所帮助。如果您通过 a element 提供访问权限,则允许浏览器尝试通过预取资源来优化用户体验。另一方面,使用 form elementmethod: POST 不会被预取,因为兼容的浏览器知道该请求并不安全。

Online opinion about [REST] seems to be divided.

REST 深受 Martin Fowler 所说的 Semantic Diffusion 的影响。 .

Semantic diffusion occurs when you have a word that is coined a person or group, often with a pretty good definition, but then gets spread through the wider community in a way that weakens that definition. This weakening risks losing the definition entirely - and with it any usefulness to the term.

RESTarchitectural style ;使用该样式构建的引用应用程序是 World Wide Web .

The only other open question which remains is, whether REST is the right way to trigger a job

取决于您所面临的运营限制以及您的雄心壮志。 “每个人”都有可用的 Web 客户端,因此这是一种将消息从客户端传输到服务器的廉价方式。另一方面,HTTP 请求并不小,并且内置了许多功能,这些功能在您的用例中可能只不过是拖累而已。

类(class)用马。

关于java - 使用哪个 HTTP 动词来触发 Kafka 消息的发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56770475/

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