다음을 수행하여 토폴로지 API에서 자바 연산자/C++ 연산자를 호출 할 수 있습니다 :
자바 연산자의 툴킷 추가
SPL.addToolkit (토폴로지, 새로운 파일 ("/ 홈/streamsadmin/myTk을"));
- 는 SPL 스트림으로 들어오는 스트림 변환 :
StreamSchema rstringSchema = Type.Factory.getStreamSchema("tuple<rstring rstring_attr_name>");
SPLStream splInputStream = SPLStreams.convertStream(inDataFileName, new BiFunction<String, OutputTuple, OutputTuple>(){
@Override
public OutputTuple apply(String input_string, OutputTuple output_rstring) {
output_rstring.setString("rstring_attr_name", input_string);
return output_rstring;
}}, rstringSchema);
운영자 호출 :
SPLStream splOutputStream = SPL.invokeOperator ("OperatorNamespace :: YourOperatorName를"splInputStream, rstringSchema 새로운 해시 MAP ());
당신은 여기에 대한 자세한 정보를 찾을 수 있습니다 : 당신이 스트림 토폴로지를 작성하는 토폴로지 API를 사용하여 생각하는 경우
보조 노트에 http://ibmstreams.github.io/streamsx.documentation/docs/4.2/java/java-appapi-devguide/#integrating-spl-operators-with-the-java-application-api
이, 그때는 쓰기 쉽다 정규 Java 클래스이며 Topology API에서 직접 호출합니다. 예를 들어
는 :
MyJavaCode someObj = new MyJavaCode();
Topology topology = new Topology("MyTopology");
TStream<String> inDataFileName = ...
inDataFileName.transform(new Function<String, String>(){
@Override
public String apply(String word) {
return someObj.someFunction(word);
}
});
여기에 유일한 요구 사항은 자바 클래스는 Serializable을 구현해야한다는 것입니다.
someObj.someFunction (word),이 함수는 웹 서비스 호출 또는 JDBC 삽입 호출 일 수 있습니까? –
예, 함수는 아무 것도 할 수 있습니다. 필자는이 접근 방식을 사용하여 Topology API로 JSON 구문 분석을 스트리밍하기 위해 GSON 라이브러리를 랩핑했습니다. 중요한 점은 클래스가 Serializable이고 토폴로지 API에 다시 전달되는 객체가 직렬화 될 수 있는지 확인하는 것입니다. –