java web 消息中间件的作用是什么(比如activeMQ) 什么时候使用java消息中间件

java web 消息中间件的作用是什么(比如activeMQ) 什么时候使用java消息中间件?最好举出常用消息中间件的几个场景。。。谢谢了。。。

mq为例:
1、并发转换:在并发场景下大部分数据也是并行处理的,但是对于一些特殊需求,需要逐个进行处理
2、同步处理转换为异步处理:通常时候有些场景下我们只需要完成主线业务,而且分支业务对我们来说并不需要立即得到结果,这个时候就可以通过mq把这些分支业务抽离出来异步处理
3、事物分割:当某个流程具有很长的事物时,我们可以通过mq的持久化机制把一个很长的事物分割成n个短事物
4、任务回调/通知:有时候我们会遇到一个很长时间才能处理完成的任务,比如视频转码。这个时候可以用mq来实现这种任务的控制。

只是为了实现队列排序,减轻服务器压力吧

异步的任务,比如说视频网站,用户上传了视频之后,服务器要压缩转码,可能还需要人工审核,这些需要比较长的时间,必须用队列放在后台处理。
可靠地消息收发,比如和支付接口通讯,用短信猫发送接收短信等等
事务和队列,事务保证任务的原子性避免并发的问题,因此需要对操作排序后按照顺序执行

消息中间件当然是同步消息用的了,具体的场景就是需要应用消息队列的场景,简单举几个例子:
1. 异步处理,将消耗资源较多的或非核心的处理过程异步化,保证响应速度及系统稳定性;
2. 流程控制,通过消息触发启动流程中的下一结点,保证流程中各结点的时序性及弱耦合;
3. 事务补偿,分布式弱事务实现的一种方式;
4. 消息广播,分布式环境下,事件生产者通过消息将事件广播给一个/多个消费者;