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 注释的方法并创建将使用反射调用给定方法的侦听器。
还有其他方法,但这似乎是最简单的
我有使用 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 注释的方法并创建将使用反射调用给定方法的侦听器。
还有其他方法,但这似乎是最简单的