是否/如何保证发送到邮箱处理器的邮件的到达顺序
也就是说,如果我做的话就在一个帖子上
agent.post(msg1)
agent.post(msg2)
我怎样才能确定在代理的处理循环中,将按顺序接收消息?
答案 0 :(得分:3)
他们是。 Post
的实现正如您所猜测的那样,它只是向队列添加一个项目(在当前线程上,在锁定下),并且帖子工作以通知任何等待代理唤醒并处理它。因此,如果您在同一个线程上一次又一次地调用Post
,则消息将按此顺序进入队列。
答案 1 :(得分:0)
如果您有某种检测顺序的方法,也可以使用inbox.Scan(function _ -> None // return an Option)
查找消息。当然,这会对性能产生代价,因此单独排队是最好的选择。