我正在尝试使用ZeroMQ的pub子消息,但客户端要求代码都是Java.我知道ZeroMQ有Java绑定但仍然依赖于ac库,因此我无法使用它.是否有可以用来连接服务器的ZeroMQ客户端,还是我自己做的简单实现?
谁必须管理ZeroMQ中的持久性?
当我们在Python语言中使用ZeroMQ客户端时,有哪些插件/模块可用于管理持久性?
我想知道使用ZeroMQ的模式.
我刚刚开始使用ZeroMQ并正在试验一些样本.我正在使用C#语言绑定并遇到了获取DllNotFound异常的问题.
将libzmq.dll复制到Windows/System32之后,我可以在我的开发机器上加载和运行样本,但是当我将其移动到其他服务器时,尽管将libzmq.dll复制到样本运行的文件夹中,我仍然会收到错误.进入Windows/System32.
我已将clzmq.dll放入示例应用程序所在的文件夹中,并且libzmq.dll此外,我将libzmq放入c:/ Windows/System32.我正在运行Windows Server 2003 Service Pack 2.当我检查机器环境变量时,WINDOWS/System32在PATH变量中.我还确定使用Release构建libzmq dll,而不是调试.
有可能我不明白应该如何使用ZeroMQ .Net绑定.我已将clzmq.dll(.Net Binding)添加到我的项目作为参考,我假设clzmq.dll会自动引用Windows PATH变量WINDOWS/System32上的libzmq.
有谁知道我是否对此有误.C#Binding文档(http://www.zeromq.org/bindings:clr)声明"ZeroMQ库文件需要可用于绑定才能工作",但它接缝我尽管无法使其可用将其复制到PATH变量中.
使用ZeroMQ .Net Bindings时是否有人遇到过DLL未找到的异常?
谢谢您的帮助,
客户如何使用zeromq订阅和收听回复?也就是说,在客户端,我想运行一个只接收消息并有选择地发送请求的循环,而在服务器端我想发布大部分时间,但有时也会收到请求.看起来我必须有两个不同的插座 - 每个插槽用于一种通信模式.是否有可能避免这种情况,并在服务器端从zeromq回调线程上的套接字接收"请求通知",同时将消息推送到我自己的线程中的套接字?
如何让ZeroMQ支持主题和模式匹配?
例如
stocks.*
stocks.appl
从我的理解ZeroMQ ..该主题将成为消息的一部分,所以我需要将主题与订阅者中的实际消息分开.什么是分离主题和消息的最佳方式?你需要一个特殊的角色(例如SOH)吗?
有没有人有从Python外部与IPython内核通信的经验?
如果我试图将消息从Python应用程序发送到IPython内核,我会使用zmq.kernelmanagerAPI.实际上,我显然需要用另一种语言编写自己的内核管理器,但是我找不到我正在寻找的有关低级消息传递协议的信息.
是否有官方规范或"备忘单"记录了在0MQ上发送的实际消息的结构?这个页面描述的是比我正在寻找的更高级别的协议......我是否必须手动拆分实现以找到我想要的内容?
我正在测试ZeroMQ作为中型系统的Pub-Sub(服务总线式).我们有大约50个节点,所有节点都应该是发布者和订阅者.网络是一种星形拓扑,但边缘相互"交谈".我们需要动态发现(不需要硬编码参与者的网络地址),也没有SPOF(单点故障).
我已经阅读了http://zeromq.org/whitepapers:0mq-3-0-pubsub,据我所知,动态发现的建议0MQ方式涉及转发订阅和发布的代理节点(XPUB/XSUB).我考虑在我们的系统中使用这样的代理作为中央调解器,但是,我对这种架构有以下关注:(A)代理节点是SPOF - 当它失败时整个系统不起作用(B)所有流量,包括数据,通过代理节点,这意味着延迟和性能问题.
假设我正确理解了pub-sub白皮书,是否有一种相对简单的方法可以在ZeroMQ中实现pub-sub + dynamic-discovery + no-SPOF?
补充一点:我已经排除了多播(PGM)解决方案,因为大多数消息都有一个/很少的相关方,我们不喜欢过度拥挤的网络.
我正在使用Symfony2来构建一个简单的聊天应用程序.我决定使用GeniusesOfSymfony/WebSocketBundle作为我的WebSocket,由Ratchet提供支持:
https://github.com/GeniusesOfSymfony/WebSocketBundle
我设法使用PubSub进行聊天,但我想使用推送集成:我希望客户端通过AJAX将消息发送到我的Symfony2控制器,而控制器又将消息推送到WebSocket的所有客户端.
我按照这个文档页面:
https://github.com/GeniusesOfSymfony/WebSocketBundle/blob/master/Resources/docs/Pusher.md
我尝试过使用ZMQ和Websocket Pusher.
使用ZMQ,当我运行websocket时,我得到了cmd通知:
ZMQ传输监听127.0.0.1:5555
但是,推送消息不起作用:
$pusher = $this->container->get("gos_web_socket.zmq.pusher");
//push(data, route_name, route_arguments)
$pusher->push(["type" => "newMessage", "text" => $request->request->get("msg")], "chat_topic");
这是我的ChatTopic类中的onPush方法:
class ChatTopic implements TopicInterface, PushableTopicInterface {
    public function onPush(Topic $topic, WampRequest $request, $data, $provider) {
        $topic->broadcast($data);
    }
}
永远不会调用onPush方法.此外,推动事件永远不会被解雇.代码中似乎没有例外.
使用WebSocket Pusher,我甚至无法使服务运行.在cmd中没有像ZMQ那样的通知,并且使用netstat命令我无法检测到它正在侦听端口1337.当我尝试推送它时,我得到异常:
无法打开插座.原因:无法建立连接,因为目标计算机主动拒绝它
可能是因为没有服务侦听端口1337.
PS  - 我在Windows 10上并使用WAMP服务器.我已成功在WAMP上安装了ZMQ扩展,如下所示phpinfo().
我lsof -U | wc -l在执行以下代码时尝试监视打开的Unix套接字文件的数量:
>>> import zmq
# 1375 Unix socket files
>>> c = zmq.Context()
# 1377 Unix socket files
>>> s = c.socket(zmq.PUSH)
# 1383 Unix socket files
>>> s.close()
# 1381 Unix socket files
>>> c.destroy()
# 1375 Unix socket files
这是为什么?我希望在连接套接字时打开TCP / IPC套接字文件,但是在连接之前这些文件又如何呢?
看来它们都是“ STREAM”类型:
有关重现此问题的有用脚本,请参见@gdlmx的答案。
看来,如果您使用Conda来安装,pyzmq一切都会按预期进行。我,但是,我仍然想知道为什么它不会工作,如果你安装pyzmq有pip,我会考虑安装的软件包的标准方式。
重现步骤:
使用Conda:
conda create -n foo python=3.6
conda activate foo
pip install pyzmq
python test_script.py
使用Python的venv:
python3.6 …在ZMQ消息传递库中,存在从基本"Pirate"模式派生的大量模式.引用文档:
我喜欢称海盗模式(我希望你最终得到这个笑话).
我对ZMQ架构有了很好的了解,已经与它一起工作了六十多年的项目.尽管如此,基本上阅读整本指南,我都不会开玩笑.
也许没有一个,但我无法帮助痒,我错过了一些相当明显的东西.谢谢.