Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于跟踪请求工作流的Guice请求范围_Java_Guice_Requestscope - Fatal编程技术网

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

Java 用于跟踪请求工作流的Guice请求范围,java,guice,requestscope,Java,Guice,Requestscope,我有一个用例,在一个请求中执行了6个步骤。业务部门要求我们获取流程中每个步骤的结果的指标。他们想让我们记录到一条运动流 在架构上,我正在寻找最好的解决方案。我们有基于java的服务,我希望随着请求的进行有一个请求范围的对象,然后当端点完成时,我们将使用fire-and-forget模式对kinesis异步进行服务调用。这样,报告就不会阻塞主线程 我正在考虑使用原始ThreadLocal或guice范围。有没有人遇到过他们解决的类似问题?我正在考虑使用guice请求范围的组件,这将大大简化代码。我

我有一个用例,在一个请求中执行了6个步骤。业务部门要求我们获取流程中每个步骤的结果的指标。他们想让我们记录到一条运动流

在架构上,我正在寻找最好的解决方案。我们有基于java的服务,我希望随着请求的进行有一个请求范围的对象,然后当端点完成时,我们将使用fire-and-forget模式对kinesis异步进行服务调用。这样,报告就不会阻塞主线程


我正在考虑使用原始ThreadLocal或guice范围。有没有人遇到过他们解决的类似问题?我正在考虑使用guice请求范围的组件,这将大大简化代码。我只是想听听你的意见。谢谢

我假设您不在servlet环境中,因为您将只使用内置的请求范围。即使这样,您也可以使用guiceservlet中的请求范围自己构建范围

void processRequest() {
    RequestScoper scope = ServletScopes.scopeRequest(Collections.emptyMap());
    try ( RequestScoper.CloseableScope ignored = scope.open() ) {
        step1();
        step2();
        step3();
        step4();
        step5();
        step6();
    }
}
您可以使用
@RequestScoped
,它在所有步骤上都是相同的对象。例如,您可以使用提供者来访问它