1.首先创建一个maven项目,在pom文件中添加以下依赖:
<dependency>
<groupId>org.apache.pulsar</groupId>
<artifactId>pulsar-functions-api</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.pulsar</groupId>
<artifactId>pulsar-functions-local-runner-original</artifactId>
<version>2.5.0</version>
</dependency>
2.在项目中创建包,路径:com.pulsar
3.创建两种Functions模型
package com.pulsar;
import java.util.function.Function;
public class HelloFunction implements Function<String, String> {
@Override
public String apply(String input) {
return String.format("hello, %s!", input);
}
}
package com.pulsar;
import java.util.Arrays;
import org.apache.pulsar.functions.api.Context;
import org.apache.pulsar.functions.api.Function;
public class WordCountFunction implements Function<String, Void> {
@Override
public Void process(String input, Context context) throws Exception {
Arrays.asList(input.split(" ")).forEach(word -> {
String counterKey = word.toLowerCase();
context.incrCounter(counterKey, 1);
});
return null;
}
}
4.最后创建测试类
package com.pulsar;
import java.util.Collections;
import org.apache.pulsar.common.functions.FunctionConfig;
import org.apache.pulsar.functions.LocalRunner;
public class PulsarTest {
public static void main(String[] args) throws Exception {
FunctionConfig functionConfig = new FunctionConfig();
functionConfig.setName("exclamation");
//从input-topic获取数据
functionConfig.setInputs(Collections.singleton("input-topic"));
//写入数据到output-topic
functionConfig.setOutput("output-topic");
functionConfig.setClassName(HelloFunction.class.getName());
functionConfig.setRuntime(FunctionConfig.Runtime.JAVA);
LocalRunner localRunner = LocalRunner.builder()
.functionConfig(functionConfig)
.brokerServiceUrl("pulsar://101.177.25.62:6650")
.build();
localRunner.start(true);
}
}