我想要异步消息的速度,但仍然有一些流量控制。我怎样才能在 Erlang 中做到这一点?
问问题
842 次
2 回答
7
目前没有进程内存限制——它在邮件列表等上进行了讨论。你可以查看那些线程。
从好的方面来说,当您使用像 gen_server 这样的 OTP 模式实现时,您可以自由地从进程队列中检索消息并测量队列的长度。
rabbitmq 中使用的 gen_server2 用于通过将消息移动到内部数据结构来优化它。当内部队列太长时,您可以丢弃任何新的传入消息。您可以静默执行此操作,也可以通知发件人邮件被拒绝。
所有这些都处于非常低的水平。
RabbitMQ 将在 AMQP 级别提供此功能。
于 2013-05-30T18:13:39.953 回答
6
执行流控制的一种常见且非常好的方法是将精心选择的消息放入调用中,这限制了每个客户端可以向服务器加载多少负载,以一种极其简单的方式有效地提供强制反馈。诀窍当然是选择哪些通信使用同步调用:-)
于 2013-05-30T20:25:47.780 回答