Flex Gateway新着情報
Governance新着情報
Monitoring API Manager操作と同様に、ソースはその動作に関するパラメーターを取得するために設定を参照できます。そのような設定を取得するには、項目に @Config
アノテーション (操作引数で使用されるアノテーションと同じ) を付加する必要があります。
public class HttpListener extends Source<InputStream, HttpRequestAttributes> {
@Config
private HttpListenerConfig config;
}
ソースで接続が必要な場合 (スケジューラーを実装していなければ 99% のコネクタで必要)、接続を取得する必要があります。操作と同様に、@Connection
アノテーションが使用されますが、主に次の 2 つの点が異なります。
メソッド引数ではなく項目で使用される。
接続オブジェクトではなく ConnectionProvider
が挿入される。
public class HttpListener extends Source<InputStream, HttpRequestAttributes> {
@Config
private HttpListenerConfig config;
@Connection
private ConnectionProvider<HttpServer> serverProvider;
@Parameter
@Optional(defaultValue = "/")
private String path;
private HttpServer httpServer;
@Override
public void onStart(SourceCallback<InputStream, HttpRequestAttributes> sourceCallback) throws MuleException {
httpServer = serverProvider.connect(); (1)
httpServer.listen(path).onRequest(request -> { (2)
processRequest(request, sourceCallback); (3)
});
}
@Override
public void onStop() {
if (httpServer != null) { (4)
serverProvider.disconnect(httpServer); (5)
}
}
}
1 | この例では、ConnectionProvider を使用して HttpServer を取得しています。一般的な接続プロバイダーの場合、適切なホストとポートを使用してすでにサーバーが設定されています。 |
2 | リモートクライアントが HTTP 要求をサーバーにプッシュし、HttpServer コンポーネントが各要求のソースを通知します。次に、ソースが SourceCallback を使用してメッセージをフローにプッシュします。 |
3 | ソースは processRequest メソッドを定義して、HTTP 要求を、フローにプッシュできるメッセージに変換する必要があります。その方法については、このドキュメントで後述しますが、例を単純化するために、これが機能すると想定できます。 |
4 | onStop() メソッドは、リソース (このケースでは HttpServer ) を解放します。サーバーが作成される前に onStart() メソッドが失敗した場合に備えて null をチェックします。 |
5 | この例では、ConnectionProvider の disconnect() メソッドを使用してサーバーを解放します。 |
上記の例は疑似コードです。例が明確かつ簡潔になるように、実際の HTTP Connector を大幅に簡略化しています。 |