项目地址: https://github.com/wangyuheng/embedded-mq-spring-boot-starter
什么是行列步队行列步队是用于存放的容器,可供消费者取出进行消费。
不雅观察者(Observer)模式的定义:指多个工具间存在一对多的依赖关系,当一个工具的状态发生改变时,所有依赖于它的工具都得到关照并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是工具行为型模式。

Observer 本来的意思是不雅观察者,但详细的实现中并不是主动去不雅观察,而是被动的吸收来自 Subject 的关照,以是更得当的名字该当是"投递"。
而且关照的模式还存在一个弊端: 关照及多个 ConcreteObserver 的消费程序仍在一个同步线程内,以是只是代码构造层面的解耦,底层还是一个事务内。
为理解决这个弊端,将的发送及 N 个消费程序拆分为 N+1 个事务,以是引入行列步队用于存储 Subject。
领域模型设计罗列领域观点
梳理交互关系代码实现LinkedBlockingQueue 作为存储 Message 的容器。Store 用于存储。为了兼容多个 Consumer,每个 Consumer 指定一个唯一标识作为 Partition Key,对应唯一的一个 LinkedBlockingQueue。 e.g. Map<Partition, LinkedBlockingQueue<Message>> messageQueueMap = new ConcurrentHashMap<>();Producer 通过 Transport 将发送只多个 Partition Key 的 LinkedBlockingQueue 行列步队中每个 Consumer 开启一个线程,通过轮询办法从 LinkedBlockingQueue 行列步队中消费。代码片段VmStoreTransportConsumerCluster利用 LinkedBlockingQueue 却未利用 take 方法的缘故原由是为了灵巧掌握消费线程的启停。
Spring 集成为了方便利用,通过 annotation 的形式与 Spring 框架进行集成。
示例ConsumerProducer代码实现其他如何跨运用消费?通过 MySQL、Redis 等公共存储更换 Store 及 Transport 实现。MySQL 须要考虑行锁。