ZeroMQ中是否有一种无需集中式转发器即可广播消息的方法?在我看来,转发器就像一个单点故障。 最佳答案 我在ZeroMQ的邮件列表中问过这个问题。显然,最好的选择是部署多个转发器并自己处理重复项。 关于tcp-ZeroMQ在没有集中转发器的情况下广播消息,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4917417/
我有一个使用ZeroMQ做各种事情的应用程序,我还想将它用作其他外部连接的tcp客户端。目前,如果外部tcp-server发送数据,客户端会收到5字节id、0字节、5字节,然后是实际消息。如何让ZeroMQ不发送这些东西?#include#include#include#include#include#include#includeintmain(){void*mpSocketContext=zmq_ctx_new();/*CreateZMQ_STREAMsocket*/void*mpSerialSocket=zmq_socket(mpSocketContext,ZMQ_STREAM)
这是用于简单请求的ZeroMqC++代码-回复,两者交替交换消息。但是当只连续发送消息时会发生错误....回复代码:includezmq.hppincludestringincludeiostreamincludeunistd.hincludectimeintmain(){//Prepareourcontextandsocketzmq::context_tcontext(1);zmq::socket_tsocket(context,ZMQ_REP);socket.bind("tcp://*:5557");zmq::message_treply(5);memcpy((void*)repl
我无法理解在TCP必须尝试重新传输消息的情况下哪些套接字类型会受到负面影响。我们有一个分布式系统,它为内部进程以及外部设备和应用程序使用进程内和TCP连接的组合。我担心的是,如果有大量流量导致延迟和丢包,则TCP重传将导致系统延迟。我想避免的是一个应用程序在队列中编译消息等待发送(通过单个ZeroMQTCP套接字),因为TCP强制套接字重复重新传输从未发送确认的消息。这是使用ZeroMQ时可能发生的问题吗?目前我在Linux操作系统上使用PUSH/PULL。或者这不是一个问题,如果不是,为什么?来自外部设备/应用程序的消息不提供陈旧数据至关重要。 最佳答案
我想开发一款多人游戏,其中1.有n个客户端,一台服务器2.客户端应该能够向服务器发送有或没有响应的消息3.服务器应该能够向客户端发送有响应或无响应的消息感觉TCP和UDP都会很慢。我遇到了ZeroMQ,它似乎开销更少并且比TCP和UDP更快。建议在这里使用ZeroMQ吗?什么是优点和缺点? 最佳答案 ZeroMq可能非常适合您的需求。目标应用程序是游戏意味着您可以为了性能而牺牲可靠性。原因如下:ZeroMQ不是基于JMS或MQ的,因此没有中央代理会减慢速度。断开连接/重新连接由ZeroMQ库自动处理,使您无需编写代码来处理对等点掉线
我有一个python客户端需要与我管理的远程服务器通信。他们使用zeromq进行通信。当我在本地测试客户端/服务器时,一切正常。但现在我将客户端和服务器部署在云端,每个都使用不同的提供商。我的问题是,建立连接的最简单(即安全)方法是什么?我假设我不能传递密码,即使我可以,我猜还有更安全的选择。我知道如何使用ssh-keygen设置无密码的ssh连接。那行得通吗?在发送tcp请求之前,客户端是否需要与服务器建立ssh连接?如果有一个python库可以帮助解决这个问题,那将是一个很大的帮助。谢谢!更新:所以超过24小时过去了,没有人回复/回答。我想我离解决这个问题越来越近了,但还没有完全解
我有以下奇怪的情况。我们有一个进程,称之为Distributor,它通过ZeroMQ/TCP从客户端接收任务,并将它们累积在队列中。有一个Worker进程,它通过ZeroMQ/IPC与Distributor对话。Distributor将每个传入的任务转发给Worker,并等待答复。一旦Worker回答,它就会向它发送另一个任务(如果同时收到一个任务),并将答案返回给客户端(通过单独的ZeroMQ/TCP连接)。如果一个任务在10毫秒内没有被处理,它就会被从队列中删除。使用1个Worker,系统能够处理~3,500个请求/秒。客户端每秒发送10,000个请求,因此丢弃了6,500个请求。
我刚刚在UnbutuPrecise(12.04)系统上下载并安装了zeromq-4.0.5。我编译了hello-worldclient(REQ,连接,127.0.0.1)和server(REP,bind)用C编写。我启动服务器。我启动客户端。客户端每秒向服务器发送一条消息,并收到响应。我按Ctrl-C停止服务器。客户端试图发送它的下一条传出消息,它卡在一个永不返回的epoll系统调用中(如strace所示)。我重新启动服务器。客户端中的zmq_recv调用仍然卡住,即使新服务器已经运行了一分钟。使客户端取得进展的唯一方法是将其杀死(使用Ctrl-C)并重新启动它。Q1:这是预期的行为吗
ZeroMQ套接字尝试在0.0.0.0:5555地址上尝试.bind()时遇到一点问题,当尝试运行时它通过RancherCattle在Docker容器中。每次我尝试运行它时,我都会遇到同样的错误:zmq.error.ZMQError:Addressalreadyinuse.尝试在我的Dockerfile中执行EXPOSE5555和EXPOSE5555/tcp,但对我没有帮助。这是我的部分代码:...self.context=zmq.Context()self.socket=self.context.socket(zmq.PUB)self.socket.bind('tcp://%s:%d
我正在将一些使用原始TCP套接字的Python代码移植到ZeroMQ以获得更好的稳定性和更简洁的界面。我立即可以看到单个原始字节数据包没有按预期发送。在原始套接字中:importsocketsock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)sock.connect((HOST,PORT))sock.send('\x00\x01\x02andsomemorerawbytes')这是当前的工作代码。这是使用ZeroMQ的相同代码:importzmqcontext=zmq.Context()sock=context.socket(zmq