HTTP is the most common choice for internal RPC service calls, but you may not have known that you can use ZeroMQ for this and probably get better results. Here are a few reasons why from this great post on augustl.com:
In summary, the benefits ZeroMQ offers over HTTP are:
- Multiple concurrent RPC calls over the same TCP connection. With HTTP, you're limited to sequential calls (keep-alive). This is a big one.
- No manual connection management. This isn't impossible to do with HTTP, and is mostly a library problem, but AFAIK few libraries exist that lets you do this right with HTTP.
- Supports multiple server processes responding to requests. No HTTP load balancer needed.
- No manual retry handling. Can stop the server, do a RPC, then start the server, then get a response - the message is queued, instead of delivered directly.
The blog goes on to show you how to take advantage of ZeroMQ RPC service calls with a little bit of Clojure code.