3

我正在考虑在系统中使用 Actors 来包装一些存储(可以是数据库,也可以是内存中的集合)。我想这样做的原因是因为我不希望对商店的调用被调用它的代码阻塞,并且我打算推送大量消息。

演员的入站消息队列能否处理数十万条消息?在代码直接调用对象上的方法和将带有队列的参与者放在中间之间会有什么性能差异?

干杯

4

1 回答 1

4

演员邮箱是一个作为可变双向链表实现的出队。大小仅受可用内存的限制。如果你发送太多消息的速度超过了 Actor 处理它们的速度,你将收到 OutOfMemoryError。

向参与者发送消息是调用方法。将消息入队、通知参与者、为参与者分配线程等都会产生开销。因此,与普通的旧同步方法调用相比,发送消息会发生很多事情,因此会产生相当多的开销。当然,如果该方法坐在那里并阻塞一段时间,它最终会变慢,至少在墙上时间。

于 2009-09-01T17:48:41.287 回答