Java Springboot服务通信
在springboot应用程序中,在@services之间通信的最佳方式是什么 我有一个serviceA,它处理一些逻辑,然后向serviceB发送一些数据,serviceB有一个执行器来运行一些数学运算,然后需要向serviceA发送更新Java Springboot服务通信,java,spring-boot,Java,Spring Boot,在springboot应用程序中,在@services之间通信的最佳方式是什么 我有一个serviceA,它处理一些逻辑,然后向serviceB发送一些数据,serviceB有一个执行器来运行一些数学运算,然后需要向serviceA发送更新 目前,我有一个blockingqueue要从服务a->B发送到,但这意味着当一个对象在队列上时,服务需要持续监视队列。。。applicationEvent publisher在这里有用吗?基本上@Service是一个Spring注释,用于自动化依赖关系管理。
目前,我有一个blockingqueue要从服务a->B发送到,但这意味着当一个对象在队列上时,服务需要持续监视队列。。。applicationEvent publisher在这里有用吗?基本上
@Service
是一个Spring注释,用于自动化依赖关系管理。此注释并不意味着类实例将是“异步服务”(据我所知,这是您的上下文)意义上的服务。因此,要通信两个@Service
注释类实例,您需要在另一个实例中引用其中一个实例,并且在异步通信中,提供一些回调功能
@Service
public class ServiceA{
ServiceB serviceB;
@Autowired
public ServiceA(ServiceB serviceB){
this.serviceB = serviceB;
}
void foo(){
serviceB.doTheJob();
}
void jobDone() {
{
}
回调可以通过serviceA的依赖关系管理注入提供:
@Service
public class ServiceB{
ServiceB serviceA;
@Autowired
public ServiceA(ServiceA serviceA){
this.serviceA = serviceA;
}
public void doTheJob() {
Executors.newSingleThreadExecutor().execute(() -> {/*do some job*/
serviceA.jobDone(););
}
}
或者可以在方法调用时注入(分别使用修改的doTheJob
call):
当然,上述回调方法只是示例,在您的上下文中可能需要使用队列
@Service
public class ServiceB{
public void doTheJob(ServiceA serviceA) {
Executors.newSingleThreadExecutor().execute(() -> {/*do some job*/
serviceA.jobDone(););
}
}