我们一般会用rabbitmq或者kafka作异常消息处理,但是今天看到spring4中有个@Async注解,作用就是异步调用,如果是这样的话我们还需要用消息中间件吗?
代码如下:
public String method(){
String result = a();
// 现状:发送kafka事件,在kafka的consumer中处理b方法的内容
sendEvent();
// 问题:能不能把sendEvent方法删除,直接把b()方法放到这里来??
// b();
return result;
}
@Async
public void b(){
... ...
// 这个方法相对比较耗时,并且对method()方法的调用返回值没有影响,完全可以异步处理
}
消息中间件的使用不是简单为了异步调用方法,主要是为了解耦,构建分布式系统。
如果只是为了异步调用某个方法的话,多线程就够了。
@Async
注解等价于在另外一个线程里执行方法。按你的场景的话确实不需要消息中间件,使用
@Async
注解就可以了。