当前位置: 首页 > 知识库问答 >
问题:

Kafka支持请求响应消息传递吗

陶高扬
2023-03-14

我正在调查Kafka9作为一个爱好项目,完成了几个“你好世界”类型的例子。

我不得不考虑基于请求响应消息传递的真实世界的Kafka应用程序,更具体地说,是如何将Kafka请求消息链接到它的响应消息。

我的思路是使用生成的UUID作为请求消息键,并使用这个请求UUID作为关联的响应消息键。与WebSphere MQ具有消息关联ID的机制几乎相同。

我的end 2 end进程将是。

1)。Kafka客户端生成随机UUID并发送单个Kafka请求消息。2)。服务器将使用此请求消息提取并存储请求UUID值。3)。使用消息有效负载完成业务流程。4)。使用响应消息响应,该响应消息使用从请求消息中存储的UUID值作为响应消息键。5)。Kafka客户端轮询响应主题,直到它超时或检索到具有原始请求UUID值的消息。

我担心的是,Kafka消费者轮询将从响应主题中删除其他客户端消息,并增加偏移,从而使其他客户端失败。

我是否试图在一个从未为其设计的用例中应用Kafka?

是否可以在Kafka中实现请求/响应消息传递?

共有1个答案

蒋健
2023-03-14

即使Kafka提供了方便的方法来持久化给定的消费者组的已提交的偏移,您也不需要使用该行为,如果您觉得有必要,可以编写您自己的行为。即使如此,您所描述的Kafka的使用对于用例来说还是有点尴尬的,因为每个客户机都需要重复地搜索主题以获得特定的响应。那充其量是低效的。

您可以将问题分成两部分,继续使用Kafka向服务器发送请求和从服务器发送响应。您需要添加的唯一部分是某种API层,您的客户机与该层进行对话,它封装了来自客户机的特定于Kafka的逻辑。这一层需要一个本地DB(关系或NoSQL),它可以按uuid存储响应,从而使API能够快速、轻松地回答响应是否可用于特定的uuid。

 类似资料:
  • 我正在读一本书中关于C#中的响应-消息模式的章节,当我最近遇到一个使用web API的项目时,我注意到了一些相似之处,并想要一些明确的东西。 在书中,作者的代码将请求(在本例中是CustomerRequestService)包装在一个名为CustomerRequestService的类中,该类的工作是处理这些请求(请求只不过是具有与查找客户的服务相关的搜索词或属性的类,而不执行其他非常稀薄/贫乏的

  • 我正在将分布式架构从Python移动到。网络核心。此体系结构具有将请求推送到服务总线(KAFKA)的网关API。请求由微服务处理。这些微服务在请求对象中设置的主题上响应网关(然后响应客户端)。主题名称是基于python Application(Flask/uwsgi)的process_id构建的。 但是用。NetCore Webapi应用程序,我无法找到从其过程中获取主题的方法(我开始在.NetC

  • 我通过endpoint与我的laravel服务器通话。我不使用Laravel View,因此无法访问其会话。 当一个需要的请求进来,我需要返回一个响应即etc每个参数?可能吗? 内部: 如果我应该使用字符串消息,而不是laravel重定向没有响应,我使用邮递员,我看到状态200。如何实现我想要的?我想用响应自定义每个必需的参数。

  • 由于内容脚本在网页而不是扩展程序的上下文中运行,因此它们通常需要某种与扩展程序其余部分进行通信的方式。例如,RSS 阅读器扩展程序可以使用内容脚本来检测页面上 RSS 摘要的存在,然后通知后台页面以显示该页面的操作图标。 扩展及其内容脚本之间的通信使用消息传递来实现。任何一方都可以监听从另一端发送的消息,并在同一通道上进行响应。消息可以包含任何有效的 JSON 对象(空,布尔值,数字,字符串,数组

  • ms tcp nodelay 描述: 在信差的 TCP 会话上禁用 nagle 算法。 类型: Boolean 是否必需: No 默认值: true ms initial backoff 描述: 出错时重连的初始等待时间。 类型: Double 是否必需: No 默认值: .2 ms max backoff 描述: 出错重连时等待的最大时间。 类型: Double 是否必需: No 默认值: 15

  • 消息传递 目录 一次简单的请求 h3Name 长时间保持连接 h3Name 扩展之间的消息传递 h3Name 安全策略 h3Name 范例 h3Name API reference Properties propertyName Methods methodName Events eventName Types id For information on how to use experiment