java - 跟踪 Pub-Sub 模型中的请求开始和结束 - 问题

标签 java spring spring-boot spring-mvc

我想跟踪单个操作的开始和结束。由于接收器每秒收到 100 个请求,我无法实现它。请帮忙

当第一个进程结束时,第二个进程进入并更改 UUID 值。

所以我无法跟踪单个消息/请求的开始和结束。

这不是一个 Web 应用程序,因此不能对 Trace 类使用“reqest”范围,我的应用程序是一个发布-订阅模型。这是一个示例应用程序。

public class MainClass {
    @Bean
    @Autowired
    public Receiver getEventHubReceiver(Trace trace, SomeOtherClass classex) {
        return new Receiver(trace, classex);
    }
}

@Component
class Trace{

    String traceid;

    public void setTraceid(String traceid) {
        this.traceid = traceid;
    }

    public void trace(String msg){
        System.out.println(traceid+" : Tracing : "+msg);
    }
}

class Receiver{
    private final SomeOtherClass classex;
    private final Trace trace;

    Receiver(Trace trace, SomeOtherClass classex){
        this.trace= trace;
        this.classex = classex;
    }

    //This is a callback method invoked by server internally.
    public void receiver(){
        trace.setTraceid(UUID.randomUUID().toString());
        trace.trace("reached Receiver..started");
        classex.invoke(); //==> I don't want to pass the Trace object here, same object should be used by multiple classes.
        trace.trace("reached Receiver..completed");
    }
}

class SomeOtherClass{

    @Autowired
    private Trace trace; // ==> ISSUE -- Behaving as a single ton.

    public void invoke(){
        trace.trace("Reached SomeOtherClass - started");
        someLongRunProcess(); // it take almost 3-5 seconds to complete this.
        trace.trace("Reached SomeOtherClass - completed");
    }

    private void someLongRunProcess() {
       //DB invoke option
    }
}

最佳答案

您是否尝试过 Trace 组件的 prototype 作用域?原型(prototype)范围应该允许您为您处理的每个请求创建一个新的 bean。欲了解更多信息,请参阅this answer on prototype scope instantiation .

关于java - 跟踪 Pub-Sub 模型中的请求开始和结束 - 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56105738/

相关文章:

java - 时区自定义显示名称

java - if else 语句之间的 float 在 3 以内?

java - 获取对象的单个实例

java - Mockito 空指针异常

java - @请求参数 : Can not get the 2nd inputted request parameters

spring - 在类路径资源...中定义的bean 'hibernateSearchService' 无法注册

java - Spring 中 ApplicationContext.getBean() 的替代方案

java - 错误 : org. hibernate.PersistentObjectException:分离的实体传递给持久化

java - 如何检查给定的 firebase 引用是否不包含任何值或者为空

java - 如何使用 Spring Boot Hibernate 将 XML 字符串保存在 Postgresql 表的 XML 类型列中