【发布时间】:2013-10-21 00:05:49
【问题描述】:
我有牛仔休息处理程序,它应该产生几个 gen_servers。 在我的牛仔处理程序中发送/处理消息的最佳方式是什么? 是否只有一种可能性可以使用“!”将消息从 gen_server 发送到处理程序?运营商?
【问题讨论】:
我有牛仔休息处理程序,它应该产生几个 gen_servers。 在我的牛仔处理程序中发送/处理消息的最佳方式是什么? 是否只有一种可能性可以使用“!”将消息从 gen_server 发送到处理程序?运营商?
【问题讨论】:
Cowboy 为每个请求生成一个 Erlang 进程。您可以使用标准消息传递,但我认为它不会导致优雅的解决方案。
为什么不使用gen_server:call 和gen_server:cast 从牛仔处理程序发送消息?当您将 call 和 cast 包装在适当的 API 中时,效果会更好。
【讨论】:
cast 将始终返回 ok。它用于异步处理。对于calls,您可以在handle_call 末尾回复{reply, my_response_message, State}.。来电者将收到my_response_message。
听起来您想使用 Cowboy 的 loop handler 概念。使您的处理程序成为循环处理程序,然后使用 ! 从您的 gen_servers 向其发送消息
【讨论】:
gen_servers 并在其中执行 call)就足够了。