react 消息队列
React性流是最近宣布的一项计划,旨在在JVM上为具有内置背压的异步流处理创建标准。 该工作组由Typesafe,Red Hat,Oracle,Netflix等公司组成。
早期的实验性实现之一是基于Akka的 。 预览版0.3包括演员生产者和消费者,这为集成提供了新的可能性。
为了测试新技术,我实现了一个非常简单的Reactive Message Queue 。 该代码处于PoC阶段,缺乏错误处理等功能,但如果使用正确,则可以正常工作!
队列是响应式的,这意味着消息将在需要时传递给感兴趣的各方,而无需轮询。 在发送消息时(以便发送者不会使代理不堪重负)和在接收消息时(以便代理仅发送与接收者可以使用的消息一样多的消息)都会施加反压。
让我们看看它是如何工作的!
队列
首先,队列本身是一个参与者,对(React式)流一无所知。 该代码位于com.reactmq.queue
包中。 actor接受以下actor消息(“ message”一词在此处已重载,因此我将使用普通的“ message”来表示我们发送到队列和从队列中接收的消息,而“ actor-messages”则为Scala)。类实例发送给演员):
-
SendMessage(content)
–发送具有指定String
内容的消息。 回复(SentMessage(id)
)被发送回带有消息ID的发件人 -
ReceiveMessages(count)
–表示发件人(演员)想接收最多邮件count
信号。 该计数与先前发出信号的需求累加。 -
DeleteMessage(id)
–毫不奇怪&#x