首页 > Spring4为我们提供了@Async注解,我们还需要消息中间件作异步消息处理吗?

Spring4为我们提供了@Async注解,我们还需要消息中间件作异步消息处理吗?

  1. 我们一般会用rabbitmq或者kafka作异常消息处理,但是今天看到spring4中有个@Async注解,作用就是异步调用,如果是这样的话我们还需要用消息中间件吗?

  2. 代码如下:

public String method(){
    String result = a();
    
    // 现状:发送kafka事件,在kafka的consumer中处理b方法的内容
    sendEvent();
    
    // 问题:能不能把sendEvent方法删除,直接把b()方法放到这里来??
    // b();

    return result;
}

@Async
public void b(){
    ... ...
    // 这个方法相对比较耗时,并且对method()方法的调用返回值没有影响,完全可以异步处理
}

消息中间件的使用不是简单为了异步调用方法,主要是为了解耦,构建分布式系统。
如果只是为了异步调用某个方法的话,多线程就够了。@Async注解等价于在另外一个线程里执行方法。
按你的场景的话确实不需要消息中间件,使用@Async注解就可以了。

【热门文章】
【热门文章】