mirror of
https://github.com/valitydev/thrift.git
synced 2024-11-07 18:58:51 +00:00
9f3296bca0
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@991260 13f79535-47bb-0310-9956-ffa450edef68
31 lines
1.7 KiB
Plaintext
31 lines
1.7 KiB
Plaintext
This directory contains some glue code to allow Thrift RPCs to be sent over
|
|
ZeroMQ. Included are client and server implementations for Python and C++,
|
|
along with a simple demo interface (with a working client and server for
|
|
each language).
|
|
|
|
Thrift was designed for stream-based interfaces like TCP, but ZeroMQ is
|
|
message-based, so there is a small impedance mismatch. Most of issues are
|
|
hidden from developers, but one cannot be: oneway methods have to be handled
|
|
differently from normal ones. ZeroMQ requires the messaging pattern to be
|
|
declared at socket creation time, so an application cannot decide on a
|
|
message-by-message basis whether to send a reply. Therefore, this
|
|
implementation makes it the client's responsibility to ensure that ZMQ_REQ
|
|
sockets are used for normal methods and ZMQ_DOWNSTREAM sockets are used for
|
|
oneway methods. In addition, services that expose both types of methods
|
|
have to expose two servers (on two ports), but the TZmqMultiServer makes it
|
|
easy to run the two together in the same thread.
|
|
|
|
This code was tested with ZeroMQ 2.0.7 and pyzmq afabbb5b9bd3.
|
|
|
|
To build, simply install Thrift and ZeroMQ, then run "make". If you install
|
|
in a non-standard location, make sure to set THRIFT to the location of the
|
|
Thrift code generator on the make command line and PKG_CONFIG_PATH to a path
|
|
that includes the pkgconfig files for both Thrift and ZeroMQ. The test
|
|
servers take no arguments. Run the test clients with no arguments to
|
|
retrieve the stored value or with an integer argument to increment it by
|
|
that amount.
|
|
|
|
This code is not quite what I would consider production-ready. It doesn't
|
|
support all of the normal hooks into Thrift, and its performance is
|
|
sub-optimal because it does some unnecessary copying.
|