Java 中重载方法的 Kafka 回调问题

Kafka callback issues with overloaded methods in java

提问人:Arun Sudhakaran 提问时间:11/11/2023 最后编辑:Arun Sudhakaran 更新时间:11/15/2023 访问量:28

问:

我们有两个微服务和 .请求将被发送到,一旦获得批准,资金将被转移。在提交批准期间,会有一个 from to 的回调,根据该回调进行转移。transferapprovaltransferapprovalKafkaapprovaltransfer

最初,只有一个批准的概念,回调来得很顺利。然后是另一个有条件批准的概念,所以一旦提交了有条件批准,我们就需要为不同的方法发送一个新的回调。

这两个回调都是在单个类中编写的(注释为 ),并被接受为两种不同的方法,当然有两种不同的方法。因此,当配置第二个回调时,来自服务的调用停止了,但从日志来看,该服务没有任何问题,因此我们认为问题出在新编写的回调上。@Servicetopicsapprovalapproval

由于一些仓促的复制和粘贴,开发人员不小心给这两个回调方法起了相同的名称,但具有不同的参数/有效负载。

@KafkaListener(topics = TransferConstants.APPROVAL_TOPIC, containerFactory = "ApprovalConcurrentKafkaListenerContainerFactory")
public void listen(@Payload Payload approvalRequest) {}


@KafkaListener(topics = TransferConstants.CONDITIONAL_APPROVAL_TOPIC, containerFactory = "ApprovalConcurrentKafkaListenerContainerFactory")
public void listen(@Payload ConditionalApprovalPayload conditionalApprovalRequest) {}

一旦我们更改了方法名称,两个回调都来了,这很好。所以,疑问是

  1. 为什么回调不会仅仅因为方法具有相同的名称而出现,即使主题和有效负载不同?
  2. Kafka 内部发生了什么情况阻止了回调?
  3. 方法名称是如何出现的?
java spring-boot apache-kafka 重载 asynccallback

评论


答: 暂无答案