英文:
Can spring request reply can be implemented with client side using spring kafka API's and server side using apache kafka API?
问题
可以使用Spring Kafka API在客户端实现Spring请求回复,同时使用Apache Kafka API在服务器端实现吗?
英文:
Can spring request reply can be implemented with client side using spring kafka API's and server side using apache kafka API ?
答案1
得分: 0
Spring for Apache Kafka提供了使用ReplyingKafkaTemplate
和带有@KafkaListener
的@SendTo
来实现请求/回复。
编辑
当使用多个客户端实例时...
>如果您有多个客户端实例,并且您没有按照前面的段落所讨论的那样对它们进行配置,则每个实例都需要一个专用的回复主题。另一种选择是设置KafkaHeaders.REPLY_PARTITION
并为每个实例使用专用分区。标头包含一个四字节的整数(大端序)。服务器必须使用此标头将回复路由到正确的分区(@KafkaListener
会执行此操作)。不过,在这种情况下,回复容器不能使用Kafka的组管理功能,并且必须配置为在固定分区上进行侦听(通过在其ContainerProperties
构造函数中使用TopicPartitionOffset
)。
>当配置单个回复主题时,每个实例必须使用不同的group.id
。在这种情况下,所有实例都会收到每个回复,但只有发送请求的实例才会找到关联ID。这对于自动扩展可能是有用的,但会增加额外的网络流量成本,并且需要付出丢弃每个不需要的回复的小成本。在使用此设置时,我们建议将模板的sharedReplyTopic
设置为true
,以便将意外回复的日志级别从默认的ERROR
降低为DEBUG
。
英文:
Spring for Apache Kafka provides request/reply using the ReplyingKafkaTemplate
and @KafkaListener
with a @SendTo
.
EDIT
When using multiple client instances...
>f you have multiple client instances and you do not configure them as discussed in the preceding paragraph, each instance needs a dedicated reply topic. An alternative is to set the KafkaHeaders.REPLY_PARTITION and use a dedicated partition for each instance. The Header contains a four-byte int (big-endian). The server must use this header to route the reply to the correct partition (@KafkaListener does this). In this case, though, the reply container must not use Kafka’s group management feature and must be configured to listen on a fixed partition (by using a TopicPartitionOffset in its ContainerProperties constructor).
>When configuring with a single reply topic, each instance must use a different group.id. In this case, all instances receive each reply, but only the instance that sent the request finds the correlation ID. This may be useful for auto-scaling, but with the overhead of additional network traffic and the small cost of discarding each unwanted reply. When you use this setting, we recommend that you set the template’s sharedReplyTopic to true, which reduces the logging level of unexpected replies to DEBUG instead of the default ERROR.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论