Hi all,
I don't know if you are interested in this, but I wrote a transport module
that exposes the REST interface of ES over ZeroMQ. This way, it is possible
to send REST-like messages with ØMQ clients and get the replies back.
For example, a ØMQ client can send the following message:
POST|/twitter/tweet/2|{"user": "kimchy","post_date":
"2009-11-15T14:12:12","message": "You know, for Search"}
It will receive the following response:
CREATED|{"ok":true,"_index":"twitter","_type":"tweet","_id":"2","_version":1}
The transport layer converts ØMQ messages in a given format into REST
request objects that can be handled by ES.
The expected format for incoming messages is:
<Method PUT,DELETE, POST...>|<URI, including parameters>|
But any other message format can be easely implemented. The SimpleClient
class in test package shows how to create a simple ØMQ client and send
messages.
The implementation uses a router-dealer pattern (
http://www.zeromq.org/sandbox:dealer), where multiple XREP sockets are
listening to incoming messages (each in a dedicated thread).
The source code is located at
https://github.com/tlrx/elasticsearch/tree/master/plugins/transport/zeromq ,
I used the Thrift module as a good example.
I still working on this (tests, benchmarks, distribute incoming messages on
many ES nodes) but your feedback will be greatly appreciated.
Thanks,
-- Tanguy