[zeromq-dev] how to integrate zmq to normal epoll web server
Martin Sustrik
sustrik at 250bpm.com
Wed Nov 17 08:45:44 CET 2010
On 11/17/2010 05:22 AM, technical issue wrote:
> I want to write a web server in C++ that use ZMQ to transfer the
> job to worker and receive the respone from the worker.
> The web server using epoll runs in a process separated from the
> worker process.
> In the web server process we have 1 main thread and two child
> threads.
> when initializing, the main thread creates two child threads:
> one for transferring the jobs to the PUSH queue (called C1), one
> for receive the response from the SUB queue (like
> Mongrel2),called C2.
> the main thread uses epoll to accept the connection from the
> client, parses HTTP header and then pushes the job to a queue
> then the C1 gets job from internal queue and push to ZMQ PUSH
> queue.
> My question is:
> - Is this architect OK?
I think so. AFAIK Mongrel2 does it the same way.
> - Sholud I use 1 or 2 ZMQ I/O thread for C1 and C2 ?
1 should be enough.
> - Because ZMQ does not support HTTP, is there any way to
> integrate HTTP socket accepted from epoll into ZMQ polling?
Either use zmq_poll instead of EPOLL, or get the file descriptor from
0MQ socket useing getsockopt(ZMQ_FD) and use epoll.
Martin
More information about the zeromq-dev
mailing list