我的 Spring 项目中需要一个消息传递或事件框架。
基本要求:
- 单个生产者/发送者,它将创建消息/事件
- 生产者将向其中发送消息的全局通道/队列/等
- 多个组件应该能够在此通道/队列中注册,以便它们可以接收消息/事件
- 所有组件都应该能够接收所有消息 - 所有接收者都可以看到每条消息,而不仅仅是一个(例如第一个)。所以单个消费者不能让消息消失并且对其他人不可见
- 消息应该以异步方式分布在所有消费者之间,因此它们都可以同时接收消息,而不仅仅是一个接一个
什么最适合我的需求?
我认为您的要求符合 Spring Integration 的功能。
Spring 原生支持观察者模式(查看事件部分)。检查它是否满足您的需求。如果没有,那么您可以使用 Spring 的 JMS 支持 + ActiveMQ。
Guava EventBus可以为您工作。它允许组件之间的发布-订阅式通信,而无需它们显式地相互了解。这是一篇不错的文章,通过一些示例进一步解释了它。