Apache pulsar - 函数执行不影响输出

问题描述

我按照此处的手册操作:pulsar functions

我在 Java 中有这个函数声明:

package org.example.test;

import java.util.function.Function;

public class ExclamationFunction implements Function<String,String> {
   @Override
   public String apply(String input) {
       return String.format("%s!",input);
   }
}

我建造了罐子。将其复制到我的 pulsar stanalone docker 并运行以下命令:

./bin/pulsar-admin functions create --classname org.example.test.ExclamationFunction --jar java-function-1.0-SNAPSHOT.jar --inputs my-topic-1 --namespace default --name JavaFunction

然后:

./bin/pulsar-admin functions trigger --tenant public --namespace default --name JavaFunction --triggerValue "test"

现在我在 C# 中使用一些客户端来使用队列,当我阅读消息时,我看到“测试”而不是“测试!”。

看起来函数触发器起作用了,但函数本身没有生效。

解决方法

需要指定输出主题并消费输出主题:--output exclamation-topic