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

查看:442
本文介绍了rabbitmq - 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注解就可以了。

这篇关于rabbitmq - Spring4为我们提供了@Async注解,我们还需要消息中间件作异步消息处理吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆