测试:
public class PipelineTest {@Testpublic void test() {Pipeline pipeline = new Pipeline(new IntegerSource());pipeline.start();}}
执行结果:
Integer-Source receive 1 return 1
Incr-Channel receive 1 return 2
String-Channel receive 2 return str2
String-Sink receive str2 return null
事件驱动架构
文章插图
事件驱动模式
事件驱动是以某个具体事件为触发条件,从而贯穿这个处理流程 。通常事件驱动属于发布订阅模式或观察者模式,用于异步处理,解耦业务逻辑 。具体实现有进程内的和分布式的方式,比如:EventBus, MQ等等 。
代码举例:
public class OrderEventListener implements Listener<OrderEvent> {@Overridepublic void onEvent(OrderEvent event) {System.out.println("receive event: " + event);}}
public class EventBus {private final static List<Listener> listeners = new ArrayList<>();/***注册监听器* @param listener*/public static void registerListener(Listener listener) {listeners.add(listener);}/***发布事件* @param event*/public void publishEvent(Event event) {// 收到并处理事件listeners.forEach(l -> {l.onEvent(event);});}}
测试:public class EventBusTest {@Testpublic void publish() {OrderEvent event = new OrderEvent("order_2", OrderState.PENDING_PAYMENT);EventBus.registerListener(new OrderEventListener());EventBus eventBus = new EventBus();eventBus.publishEvent(event);}}
Spring中也有事件发布和监听(深入浅出Spring/SpringBoot 事件监听机制):@Componentpublic class OrderEventListener{@Async@EventListener(OrderEvent.class)public void onEvent(OrderEvent event) {System.out.println("receive event: " + event);}}
public class EventTest {@Autowiredprivate ApplicationContext context;@Testpublic void publishEvent() {OrderEvent event = new OrderEvent("order_1", OrderState.PENDING_PAYMENT);context.publishEvent(event);}}
总结以上通过代码实例简单说明了工作中常用到的架构模式,但是模式不是固定的,工作中需结合实际情况按需使用即可 。
【浅谈常用的架构模式】
推荐阅读
- 瑜伽不减肥是为什么
- 经典冷笑话大全爆笑
- 户外登山注意事项有哪些呢
- 白鸡冠茶的储存方法,储存白毛猴茶的常见方法
- 冬季如何健身呢?
- 游泳要注意些什么呢?
- 如何坚持健身呢?
- 客厅装修风水须知常识汇总
- 绿茶的保质期有多久,茶叶的保质期样平常多久为有效期
- 常见的床单尺寸是多少