1.15.7.1 react/zmq

优质
小牛编辑
133浏览
2023-12-01

(要求Workerman版本>=3.3.6)

安装:

composer require react/zmq

示例:

<?php
require_once __DIR__ . '/vendor/autoload.php';
use WorkermanWorker;

$consumer = new Worker();

$consumer->onWorkerStart = function() {
    global   $pull;
    $loop    = Worker::getEventLoop();
    $context = new ReactZMQContext($loop);
    $pull    = $context->getSocket(ZMQ::SOCKET_PULL);
    $pull->bind('tcp://127.0.0.1:5555');

    $pull->on('error', function ($e) {
        var_dump($e->getMessage());
    });

    $pull->on('message', function ($msg) {
        echo "Received: $msgn";
    });
};

Worker::runAll();

文档:

https://github.com/reactphp/zmq

注意:

1、所有的异步编码必须在onXXX回调中编写

2、异步客户端需要的$loop变量请使用Worker::getEventLoop();返回值

最后更新:

类似资料

  • 据我从文档中所知,ZeroMQ套接字不应该从不同的线程中使用(例如,从不同的线程中读取/写入)。 这反过来又阻止了我在默认调度程序上运行的Akka执行元中使用ZMQ套接字(无法保证哪个线程将执行我的方法)。 使用PinnedDispatcher是否允许我在Actor中安全地使用这样的套接字,前提是我注意不要阻塞(至少不要阻塞太长的时间)? 通过:https://doc.akka.io/docs/a

  • 我正在尝试在这样的笔记本中运行应用程序的最简单演示。 我第一次运行它时,一切都很好。然后我用中断了单元格。但是下次我运行它时,笔记本会返回一些错误消息,如下所示: 然后我得到以下回溯: 没有告诉我太多,所以我查看了我开始的cmd,看到了这个:Traceback(最近的最后一次调用): 似乎iPython笔记本服务器没有正确处理我的中断。但是,当我试图寻找侦听端口5000的ghost进程时,我一无所

  • 当我尝试将Tornado和pyzmq Ioops结合起来时,我遇到了一个恼人的问题(虽然不是关键问题),正如pyzmq官方文档中所描述的那样。 我有一个运行tornado(T)服务器的进程,它接受来自客户端(C)的RESTAPI请求,并通过ZMQ传输将它们代理到另一个执行实际工作的进程(Z)。 如果C在Z回复T之前关闭连接,Z(tornado)输出一长串异常跟踪(见底部)。想象一下下面的例子: 这

  • 我有三个申请互相交谈。websocket服务器(1),它接受来自浏览器的连接,解析url以查看需要什么数据,如果客户机内存中有数据,则将其提供给客户机,如果没有数据,则从另一个称为“Fetcher”(2)的应用程序中请求数据。Fetcher接收此作业,从返回JSON数据的简单API(3)请求它,并将其发送回websocker服务器,后者将其发布给连接的客户机。然后“Fetcher”开始定期检查该U

  • 我在python中使用通过在主应用程序和子进程之间分配计算。 有时,主进程可能会崩溃,而子进程仍然挂起,监听它们各自的端口。 正如此SO问题中建议的那样,我尝试使用在主机崩溃时关闭工作人员。但是,当我强制关闭主服务器时,不会捕获这种情况。 有没有办法让 端工作线程子进程注意到 端主进程通过 关闭(此处可能暗示)? 实用解决方案(编辑) 我实现的一个实用的解决方案是让master在重新启动时< co

  • 我的程序使用ZMQ进行通信。也就是说,服务器(C、linux)创建一个XPUB套接字,然后在一个线程中读取它,在另一个线程中发布数据(写入)。 客户端(java、jzmq、linux)创建一个SUB套接字,并订阅使用它。 一段时间后,服务器端在读取线程中接收SIGABRT。 什么可能是问题的根源?在不同的线程中读/写或创建XPUB/SUB对? 如果问题是在多线程中,那么使用XPUB套接字的正确范例

开发工具

zmq-vala