pubsub的注解处理

Annotation processing for pubsub

我有使用 kafka 来抽象 pub sub 机制的第 3 方库。我有类似的内容订阅主题

DDS.createListener((topic) -> "do sth with this topic");

我想更进一步,想创建一个注解如下

@Subscribe("topicName")
public void listen(Topic topic) {
    // do sth with this topic
}

我在处理注释时遇到问题。

首先,我需要找到用 Subscribe 注释的方法,然后需要在幕后监听主题,然后当一个接收到时,将其定向到注释方法,在示例中为“listen”。 我应该在哪里听

DDS.createListener((topic) -> listen() /* dunno how to access listen */)

并且为了调用 listen 方法,我需要一个 class 实例,但我不确定我将如何处理它。执行 Class.newInstance() 没有意义。我需要不同类型的配置吗?

您需要在处理主题注册的包装器 class 中创建 register(Object obj) 方法。这需要在你有订阅方法的 class 的构造函数中调用。

所以每当有人调用 register(this) 方法时,您将获得对象引用,您需要找到 @Subscribe 注释的方法并创建将使用反射调用给定方法的侦听器。

还有其他方法,但这似乎是最简单的