2017-01-30 1 views
0

Ich bin verwirrt mit der Erstellung eines benutzerdefinierten Konnektors für WSO2 ESB 5.0.0. Ich brauche einen benutzerdefinierten Anschluss für Legacy-Gerät (Thermometer). Dieser Connector wird über die ESB REST API aufgerufen. Der Connector sollte nur eine Socket-Verbindung zu einer bestimmten IP-Adresse (Connector-Eingabeparameter) erstellen und dann die Antwortdaten analysieren. Das Programm funktioniert perfekt alleine. Ich weiß jedoch nicht, wie ich es in benutzerdefinierten Connector integrieren soll. Vor allem, wie Daten vom Connector als Antwort auf den API-Aufruf gesendet werden.WSO2 ESB benutzerdefinierter Konnektor

Mein Steckverbindercode:

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

Wo die Nachricht in in.readLine() gesendet werden soll ???

+0

Sie die in bestimmten müssen/Parameter für Ihren Mediator aus. Auf diese Parameter kann innerhalb des Mediators als Eigenschaften zugegriffen werden, und die Mediatorantwort kann in eine Eigenschaft oder in die Nachrichtennutzlast eingefügt werden. –

+0

danke, außerdem bin ich nicht sicher, wie benutzerdefinierte Connector in ESB API aufgerufen wird. Was ist die richtige API-Sequenz? – vladikk

Antwort

0

Sie sollten in der Lage sein, Ihren benutzerdefinierten Mediator mit dem Mediator aufzurufen. Unten ist ein Beispiel, wie es geht.

<class name="org.wso2.esb.tutorial.mediators.SurchargeStockQuoteMediator"> 
<property name="defaultPercentage" value="10"/> 

finden Sie nützliche Informationen unter folgenden URLs finden.

http://wso2.com/library/2898/ http://wso2.com/library/2936/

Hoffnung, das hilft.

+0

Haben Sie Stecker mit Mediator verwechselt? –

2

gelöst: I die Antwort in Message gespeichert:

messageContext.setProperty("temperature", Double.parseDouble(in.readLine())); 

und dann mit dem nächsten Prozess Mediator. Danke

1

Ich denke, Sie sind mit dem Klassenmediator verwechselt Connector. Grundsätzlich ist ein Connector eine Sammlung von Vorlagen, die Vorgänge definieren, die Benutzer von ihren ESB-Konfigurationen aus aufrufen können, um einfach auf bestimmte Logik zur Verarbeitung von Nachrichten zuzugreifen. In der Regel werden Connectors verwendet, um die API eines externen Service zu umbrechen. Zum Beispiel gibt es mehrere Standard-Connectors, die mit dem ESB bereitgestellt werden und die APIs von Diensten wie Twitter und JIRA aufrufen. Sie können auch einen eigenen Connector erstellen, um den Zugriff auf andere Dienste zu ermöglichen.

Wir können keine Java-Funktionen innerhalb der Connector-Vorlagen erstellen. Damit wir eine Java-Klasse erstellen und diese benutzerdefinierte Klasse nennen wie

<class name="class-name"/> 
innerhalb des Verbinder Vorlage Klasse Mediator

Siehe,

https://docs.wso2.com/display/ESBCONNECTORS/Writing+a+Connector

https://docs.wso2.com/display/ESB500/Class+Mediator