type
status
date
slug
summary
tags
category
icon
password
本次探的呢,是公司项目中使用到的一种组合方式。
内容
先上未改之前的代码
解释一下,这里面的业务逻辑为:
(1)先更新缓存
(2)向数据库中写入日志审计等
(3)向客户端发送刷新申请
(4)对外部系统发送消息,对内部的其他微服务发送消息
而突然感觉不满足业务逻辑,需要将(4)中的外部和内部消息排列先后顺序,且还要满足和前三个不属于同一个线程。(有趣的需求)
所以便将配置方式做了个demo,进行分析,输出的结果为:
分析一下,可以很明显的看出,前面3个service-activator是在同一个线程连操作的,并且它们3个为顺序执行的操作。当三个执行完之后会进入bridge。而bridge的两个是两个异步线程处理的,不受互相影响。这个时候,好奇心不禁在问我,那前三个和bridge呢?然后我调了下代码,把bridge调到前面,如下:
输出结果为:
我又经过很多次调整,总结了一下发现的内容:
(1)channel中是xml的配置的顺序进行的
(2)当进入service-activator时,会在当前线程中进行执行,方法执行完后,才会继续执行后面的内容
(3)当进入bridge时,会另起一个线程开始处理内容
(4)当然,因为service-activator的线程问题,如果其中一个报错,后面也会报错。在bridge因为开启了另一个线程,如果其中一个报错,不会影响其他线程的操作
- ---------------------------------END---------------------------------
天行健,君子以自强不息;地势坤,君子以厚德载物
- 作者:Doubletree
- 链接:https://blog.doubletree.fun/article/dfc5aec7-3acb-4322-81a7-301911f7a05b
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。