Pulsar Functions 本地開發實戰

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);
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章