apache-kafka - 两个同步客户端可以使用相同的请求/回复主题吗
问题描述
我有一个用户服务正在监听请求主题并返回用户对象。我需要从两个不同的服务同步调用此服务,并想确认它们是否可以使用相同的请求/响应主题名称来请求用户对象?
解决方案
请参阅文档。
使用相同的回复主题时有两种选择:
- 丢弃意外回复:
配置单个回复主题时,每个实例必须使用不同的 group.id。在这种情况下,所有实例都会收到每个回复,但只有发送请求的实例才能找到相关 ID。这对于自动缩放可能很有用,但会产生额外网络流量的开销以及丢弃每个不需要的回复的小成本。使用此设置时,我们建议您将模板设置
sharedReplyTopic
为 true,这会降低对 DEBUG 的意外回复的日志记录级别,而不是默认的 ERROR。
- 使用专用分区:
如果您有多个客户端实例并且您没有按照上一段中的讨论配置它们,则每个实例都需要一个专用的回复主题。另一种方法是为每个实例设置
KafkaHeaders.REPLY_PARTITION
并使用专用分区。Header 包含一个四字节的 int (big-endian)。服务器必须使用此标头将回复路由到正确的分区(@KafkaListener
这样做)。但是,在这种情况下,回复容器不能使用 Kafka 的组管理功能,并且必须配置为侦听固定分区(通过TopicPartitionOffset
在其ContainerProperties
构造函数中使用 a)。
推荐阅读
- socket.io - 为流畅的服务器更改注入客户端 ID
- javascript - 在对象的实例化时,如何最好地处理其属性之一的异步初始化?
- python - FileNotFoundError: [WinError 3] 系统找不到指定的路径:...chromedriver.exe
- android - 主ActivityBottomNavigationView重叠Fragment内容
- vue.js - 为什么会出现错误“不允许使用不规则空格”以及如何解决?
- powershell - Azure Devops powershell,变量 char 替换以解决现有 env var
- laravel - 如何在没有电子邮件的情况下使用 laravel auth 注册
- intellij-idea - IntelliJ 中的快捷方式在其他程序中执行
- javascript - 如何使用箭头键移动特定的 div(由单击的按钮指定)
- android - HERE API - HelloMap 示例未与 4.5.0 一起运行 - OPTIONS 不支持写入等