我是ZeroMQ
的新手,我看过一些例子,似乎总是让侦听器做忙碌循环来接收消息,例如,在pub/sub
模式中。接收者需要这样做来消费消息,
while (true)
{
var message = socket.Recv(Encoding.UTF8);
message.Dump();
}
是否存在任何类型的回调机制,例如接收器只是将自己注册到套接字,并且只要有消息就会调用它,而不是忙于循环检查消息。
答案 0 :(得分:0)
取决于您的语言选择。例如,如果您使用node.js,那么所有都是回调。
您没有指定您的语言选择,也不会指定您的应用程序中发生的事情。通常,您的策略将取决于您的应用程序的整体性质。
您通常会看到一个专注于接收消息的循环的原因有两个:
也就是说,如果您可以在应用程序中定义一个更大的循环,您可以在一次或仅定期接收消息,您可以将任务委派给更大的循环。比如说,(psuedocode):
while (functional_task) {
while (msg = socket.recv()) {
handle(msg);
}
do_other_stuff();
}
...这样你就可以在每个功能循环中处理所有排队的消息,而不是只有一个专用于你的消息的循环。
您是否可以使用回调系统在很大程度上取决于您的语言和ZMQ绑定。