rabbitmq - Spring4为我们提供了@Async注解,我们还需要消息中间件作异步消息处理吗?
本文介绍了rabbitmq - Spring4为我们提供了@Async注解,我们还需要消息中间件作异步消息处理吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
我们一般会用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
注解就可以了。
这篇关于rabbitmq - Spring4为我们提供了@Async注解,我们还需要消息中间件作异步消息处理吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文