Simplify publishing by introducing a service rather than giving threads endpoints
Opened this issue · 0 comments
At the moment, each Python thread requires a ZeroMQ endpoint (e.g. 'tcp://127.0.0.1:9999'). This is added in the configuration file and both publishers and consumers need this configuration to work properly. This makes it impossible to use short-lived dynamic threads that send messages.
Additionally, it's very difficult to debug problems with published messages disappearing because of all the various sockets it could have been published to (or not, as the case may be). Basically, the current implementation looks a bit like:
I would like to propose we add a service that is essentially a broker. It accepts requests from clients to publish messages and responds with the result. By default, it would accept submissions over a IPC socket, but TCP could also be used. It binds to a publishing socket that subscribers can connect to and receive all submitted messages: