ビルド中のRESTクライアントでリモートサービスに接続する際にNetflixのHystrixライブラリを使用してサーキットブレーカとして機能します。彼らが提供するライブラリを介してイベントのストリーミングとダッシュボードの監視をセットアップしたいと思います。サンプルアプリケーションhereを見ると、サーブレットフィルタとサーブレットクラスをWebアプリケーションに適用する必要があるようです。Jersey 2のHystrix Javaサーブレットとサーブレットフィルタの使用
私はJersey 2でSpring Bootを使用しており、JerseyConfig.java(web.xmlはありません)のリソースとフィルタを配線しています。私はジャージーフィルターがサーブレットフィルターと同じではないことを知っていますし、2つを統合するのに苦労しています。
Javaサーブレットフィルタを使用してジャーナルフィルタとして機能させるにはどうすればよいですか?また、Javaサーブレットをどのように使用してJerseyリソースとして機能させるのですか?
私の現在のサーブレット戦略は、そういうものを包むことです。それぞれに1つ。
@Path("/hystrix.stream")
public class HystrixResource extends HystrixUtilizationSseServlet {
@Context
HttpServletRequest httpRequest;
@Context
HttpServletResponse httpResponse;
//This returns void because it is a text/stream output that must remain open,
//so the httpResponse is continually written to until the conenction is closed
@GET
public void doGet() throws ServletException, IOException {
doGet(httpRequest, httpResponse);
}
}
これは機能している可能性がありますが、データは何らかの理由で基本的に空です。私はその理由はフィルタが機能していないためだと推測しています。
data: {"type":"HystrixUtilization","commands":{},"threadpools":{}}
彼らはジャージーContainerRequestFilterとは異なる入力と出力を期待するので、サーブレットフィルタをラップする方法を私にそれほど明確ではありません。私のJerseyConfigの次の実装は、ログがフィルタが登録されていることを示すものではなく、これらのファイルの行をデバッグモードで壊すことができないため、何もしないようです。
@Component
@ApplicationPath("/")
public class JerseyConfig extends ResourceConfig {
private static final Logger LOGGER = Logger.getLogger("JerseyConfig");
public JerseyConfig(){
//filter to provide a bridge between JAX-RS and Spring request attributes
register(RequestContextFilter.class);
register(SpringComponentProvider.class);
//handles custom serialization
register(new ObjectMapperContextResolver());
//try to register the filters - which doesn't work because these aren't Jersey Filters
register(HystrixRequestContextServletFilter.class);
register(HystrixRequestLogViaResponseHeaderServletFilter.class);
registerResources();
/*
* Enable the logging filter to see the HTTP response for each request.
*/
register(new LoggingFilter(LOGGER, true));
}
}
こんにちは@peeskillet。ご返信ありがとうございます。私は春のウェブを通じてページを提供していないので、あなたの回答のいずれかが適用されますか? – th3morg
サービングページとは何が関係していますか?あなたはSpring Bootをタグ付けしているので、私はあなたにSpring Bootソリューションを提供しています。私はどこに役立つページがどこに問題に適合しているかはわかりません。 –
ありがとうございます@peeskillet。私はあなたの提案に基づいてこれを得ることができました。 hystrix.streamのサーブレットは、HystrixUtilizationSseServletではなく、HystrixMetricsStreamServletである必要があります。私はそれを編集しようとします。第2に、コマンドが実行されるまでデータは存在しない。したがって、アプリケーションを再起動すると、リクエストがHystrixCommandsを通過するまで、データは空になります。ありがとう! – th3morg