我在为WSO2 ESB 5.0.0创建自定义连接器时感到困惑。我需要一个用于传统设备(温度计)的自定义连接器。此连接器将通过ESB REST API调用。连接器唯一应该做的是创建到给定IP地址(连接器输入参数)的套接字连接,然后解析响应数据。该计划完美独立。但是,我不知道如何将它集成到自定义连接器。特别是如何从连接器发送数据作为对API调用的响应。
我的连接器代码:
@Override
public void connect(MessageContext messageContext) throws ConnectException {
Object templateParam = getParameter(messageContext, "generated_param");
try {
log.info("sample connector received message :" + templateParam);
/**Add your connector code here
**/
Socket socket = new Socket("172.16.xxx.xxx", 2000);
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8"));
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out.write("*SRTC\r");
out.flush();
System.out.println(in.readLine());
out.close();
in.close();
socket.close();
} catch (Exception e) {
throw new ConnectException(e);
}
}
应该发送in.readLine()中的消息???
答案 0 :(得分:2)
已解决:我将响应存储在messageContext:
中messageContext.setProperty("temperature", Double.parseDouble(in.readLine()));
然后处理下一个调解员。感谢
答案 1 :(得分:1)
我猜你的连接器与类中介器混淆了。基本上,连接器是模板的集合,用于定义用户可以从其ESB配置调用的操作,以轻松访问用于处理消息的特定逻辑。通常,连接器用于包装外部服务的API。例如,ESB提供了几个默认连接器,用于调用Twitter和JIRA等服务的API。您还可以创建自己的连接器以提供对其他服务的访问。
我们无法在连接器模板中创建java函数。因此,我们创建一个java类,并使用类中介如
在连接器模板中调用该自定义类<class name="class-name"/>
参见,
https://docs.wso2.com/display/ESBCONNECTORS/Writing+a+Connector
答案 2 :(得分:0)
您应该能够使用介体调用自定义介体。以下是如何操作的示例。
<class name="org.wso2.esb.tutorial.mediators.SurchargeStockQuoteMediator">
<property name="defaultPercentage" value="10"/>
您可以在以下网址下找到有用的信息。
http://wso2.com/library/2898/ http://wso2.com/library/2936/
希望有所帮助。
答案 3 :(得分:0)
您可以在连接器代码中的messageContext中添加响应,稍后您可以使用您提供的名称在代理中调用值,同时在属性[1]中添加值。现在您可以将值传递给任何API。