Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Feb 22 14:56
    l0k18 commented #3236
  • Feb 22 14:53
    l0k18 commented #3236
  • Feb 21 21:57
    jacek-bulatek commented #3796
  • Feb 21 21:50
    jacek-bulatek edited #3796
  • Feb 21 21:47
    jacek-bulatek commented #3796
  • Feb 21 21:45
    jacek-bulatek commented #3796
  • Feb 21 21:04
    jacek-bulatek commented #3796
  • Feb 21 21:03
    jacek-bulatek commented #3796
  • Feb 21 20:52
    jacek-bulatek commented #3796
  • Feb 21 20:51
    jacek-bulatek commented #3796
  • Feb 21 20:49
    jacek-bulatek commented #3796
  • Feb 21 20:48
    jacek-bulatek commented #3796
  • Feb 21 20:47
    jacek-bulatek commented #3796
  • Feb 21 20:46
    jacek-bulatek commented #3796
  • Feb 21 16:24
    stale[bot] labeled #3331
  • Feb 21 16:24
    stale[bot] commented #3331
  • Feb 21 15:32
    bluca commented #3831
  • Feb 21 15:03
    WallStProg commented #3831
  • Feb 21 15:02
    WallStProg commented #3831
  • Feb 21 14:08
    WallStProg synchronize #3831
Doron Somech
@somdoron
try to build with cmake, it probably works best on windows
Juan Pablo Garcia
@juanpagfe
Hello. Do any of you have a transparent proxy made using zmq?
Doron Somech
@somdoron
Im using nodejs with zeromq as the API proxy, communicating with majordomo to services
Mirko K
@Qgel
Hi. I'm currently building an application using ZMQ (PUB-SUB) where latency is important to me. I did some measurements and noticed that latency drops significantly as soon as I put some load (i.e. unreleated messages) on the sockets, which leads me to believe there might be some buffering (in ZMQ or maybe the OS?) going on that I'm unaware of. Any tips where I should look if I want to minimize latency also in the low-load case?
lat_load.png
zoobab "NO Software Patents"
@zoobab_twitter
pong
Will submit Glard to fosdem, the last IOT project I did with Pieter
zoobab "NO Software Patents"
@zoobab_twitter
2 zmq talks in the IOT devroom
Mirko K
@Qgel
I have posted a StackOverflow question with some more information and some example code to reproduce the issue if anyone wants to take a look: https://stackoverflow.com/questions/59323533/low-load-on-zmq-sockets-significantly-increases-latency
Aero Blue
@aeroblue
Hi, the last zyre release was in 2017, any plans of doing another one any time soon?
Kevin Sapper
@sappo
Yes, we could do another release. I like to fix the JNI bindings before. I'll work on it after Christmas.
Aero Blue
@aeroblue
great,
thanks
dkonik
@dkonik

Hi peeps, hopefully this is the right place to ask this question. I just discovered zmq a couple of days ago while trying to find a networking/message sending solution, and have been reading through the docs and guide. I'm trying to wrap my head around/better understand how to use the different socket types to solve certain scenarios, and was wondering if someone with experience could give their opinion/feedback?

The specific scenario is something like the following (I'm going to make up a scenario related to camera video streams in a house, just to be more concrete):

  • A single server, which has video streams of multiple rooms of a house (kitchen, living room, etc).
  • At any point, a number of clients can connect to the server and request one or more streams from the server. So one client might connect and say, I want the stream of the kitchen and the living room. As is typical for video streams, this does not have to be reliable, but (and this is critical), this stream must be as low latency as possible. Every millisecond counts. This is priority zero, and why I am even looking at switching networking solutions, the current one is too slow.
  • The relationship is not so unidirectional, however, as in addition to simply receiving data, a client can also send messages to the server, telling it to, say, move the camera in a room, but only if they are actually streaming the video for that room. These messages are small, infrequent, but should be reliable. Latency not critical here.
  • There are also infrequent, reliable, latency uncritical messages that the server sends to the client.

That roughly sums up the scenario. What I've come up with:

  • Client-Server pattern for initial handshake/connections, as well as all client->server communication, and all reliable server->client communications.
  • Radio-Dish pattern for the streams

So roughly, something like this:
A client sets up a ZMQ_CLIENT socket, connects to the server, says they want the "kitchen" stream. The server sets up the ZMQ_RADIO socket (if this is first client, otherwise already exists) and the group, and sends the group name to the client. The client then sets up a ZMQ_DISH socket, and begins receiving the stream.

Does this seem like I am following the patterns that zmq sets up in an intended way? If not, any feedback?

dkonik
@dkonik
Also, wondering if I am misunderstanding something, or if the guide is out of date with respect to some of the documentation, as the guide says Don't share ZeroMQ sockets between threads. ZeroMQ sockets are not threadsafe, while the documentation says Following are the thread safe sockets: * ZMQ_CLIENT * ZMQ_SERVER * ZMQ_DISH * ZMQ_RADIO * ZMQ_SCATTER * ZMQ_GATHER. These all look like newer/draft socket types, so is it just that the newer ones have been implemented in thread safe manners while the older ones have not?
Doron Somech
@somdoron
You can share the thread-safe sockets between threads
your design looks good to me, I would add that you don't really need to set up the socket or group. The client can just connect (to a RADIO) using DISH and start streaming over the correct group (e.g KITCHEN)
You can also use UDP for the RADIO-DISH if you prefer unreliable protocol and TCP for the CLIENT-SERVER
dkonik
@dkonik
Awesome, thanks!
Himanshu Baghel
@hibaghel
image.png
hey can anyone help me with this issue
i have download and extracted libzmq-v141-x64-4_3_2
Doron Somech
@somdoron
which OS?
Himanshu Baghel
@hibaghel
windows 10
PauloSantosJunior
@PauloSantosJunior
Anyone have benchmark about zeromq and windows tcp/ip implementation, i know they are not equivalent implementation?
jensschroer
@jensschroer
Hi, is it possible to compile libzmq without exception support? I am exploring if I can compile it for an embedded system that offers C++ support, a posix lib, but no exception support as of now
jensschroer
@jensschroer
Never mind. I think I found the solution
Aryeh Weinreb
@weinrea
I would like to pass C++ smart pointers over inproc sockets.
Any ideas how this can be done if at all possible?
Gabriel
@higaxman
Question: anyone experienced troubles in using clrzmq4 (.NET 4.5) with IIS under Windows ? IIS is dying when try to call libzm.connect method
Doron Somech
@somdoron
Why not NetMQ? I used it with IIS in the past
PauloSantosJunior
@PauloSantosJunior
@somdoron Hello, i will try make something like ZeroMQ Curve: an actor behind a socket validating connections, is it possible? Could you give me some orientation?
Luca Boccassi
@bluca
https://github.com/zeromq/czmq/blob/master/include/zactor.h - czmq supports curve, so you can probably proxy a zactor to a remote end
PauloSantosJunior
@PauloSantosJunior
Thank you, i will read more about actor.
Vinny
@vpaladino778
What's the best way to learn zeroMQ. I have to design and implement a system with ZeroMQ. I've settled on a basic client with a single dealer socket and multiple servers that will process requests that have a router socket. I haven't used this before and i'm still having trouble on how to implement it. I've been reading the ZMQ-Guide, does anyone have any useful resources (lectures, videos, tutorials, articles) that help supplement the zmq guide
I can't find a lot of information on the router-dealer affiliation outside of the guide
Kevin Sapper
@sappo
The ZGuide goes quite into detail explaning the router-dealer affiliation. What kind of issues are you facing and in which language/library are you coding?
Vinny
@vpaladino778
@sappo Hey Kevin, I'll try to spend more time with the guide. I'm using C++ (cppzmq), and i'm just having trouble getting started. I'm a junior haven't done anything like this before, so i'm just having my trouble wrapping my head around everything.
Vinny
@vpaladino778
This message was deleted
Vinny
@vpaladino778
I'm also getting really caught up in the idea of writing a protocol. For example in the guide they mention eht Majordomo patterm and post some code and say "Look at how easy and simple this is, all we have to do is include our API" but then looking at the api it's a whole other level of complexity
Kevin Sapper
@sappo
@vpaladino778 on zeromq.org I tried to explain the core principles of how zeromq. Maybe its worth starting there to get an overview.
Kevin Sapper
@sappo
Writing an protocol is definitely one of the more challenging tasks. Have a look at zproto if you're interested in that topic https://github.com/zeromq/zproto
If you got more questions feel free to ask
Vinny
@vpaladino778

@sappo Thanks for your help, i'll have to take a look at that. And if you helped write the ZeroMQ guide, you did do an excellent job. It's definitely one of the easier texts i've read

I guess i'm trying to determine if i need a protocol or not. Basically i have 1 client (Router Socket) that needs to send a request to one specific server, with a dealer socket, (There are several servers) to perform some work then send the result back to the client. I figure the router socker can prepend an ID to the message and send it to the specific client. What scenarios would i have to write my own protocol?

Kevin Sapper
@sappo
@vpaladino778 The get started you could simply send strings back and forth. Put each string into a zeromq frame as part of a multipart message.
Regarding the ROUTER socket. During the ROUTER socket adds the ID of the sender as first frame to the message. You'll need the ID when sending. The ID has to be the first frame of the message back to the ROUTER. The ID frame is removed by the ROUTER socket before the message is sent. I hope this information is useful for you.
Vinny
@vpaladino778
@sappo Thank you for the help, i really appreciate it
I was wondering if someone could check out this minimal example to see if i'm sending messages correctly: https://gist.github.com/vpaladino778/00864aeeba360d56d82e43d2d8904ec1
Basically the client is supposed to send a 'request' to the server, then the server will process it and send the result back to the client.
I'm not sure if i'm handling the frames correctly