Guice请求范围用于跟踪请求的工作流程

时间:2017-04-22 03:41:00

标签: java guice requestscope

我有一个用例,我在一个请求中执行了6个步骤。该企业要求我们捕获有关每个步骤结果的指标。他们希望我们登录Kinesis流。

建筑方面我正在寻找最佳解决方案。我们有基于java的服务,我希望在请求进行时丰富请求范围对象,然后当端点完成时,我们将使用fire和forget模式对kinesis异步进行服务调用。这样报告就不会占用主线程。

我正在考虑使用原始的ThreadLocal或guice范围。有没有人遇到他们解决的类似问题?我正在考虑使用guice请求作用域组件,这将极大地简化代码。只是寻找一些意见。谢谢!

1 个答案:

答案 0 :(得分:1)

我假设您不在servlet环境中,因为那样,您将只使用内置的请求范围。即便如此,您也可以使用 guice-servlet 中的请求范围自行构建范围。

void processRequest() {
    RequestScoper scope = ServletScopes.scopeRequest(Collections.emptyMap());
    try ( RequestScoper.CloseableScope ignored = scope.open() ) {
        step1();
        step2();
        step3();
        step4();
        step5();
        step6();
    }
}

您可以使用@RequestScoped,它将在您的所有步骤中成为同一个对象。例如,您可以使用提供程序来访问它。