Skip to content

Instantly share code, notes, and snippets.

@codysoyland
Created August 23, 2011 16:23
Show Gist options
  • Save codysoyland/1165753 to your computer and use it in GitHub Desktop.
Save codysoyland/1165753 to your computer and use it in GitHub Desktop.
Riak postcommit ZeroMQ publisher
-module(riak_zmq).
-export([postcommit_publish/1, get_zmq_publisher/0, zmq_publisher/0, zmq_publisher/1]).
postcommit_publish(RObj) ->
Body = riak_object:get_value(RObj),
{ok, Pid} = get_zmq_publisher(),
Pid ! {send, Body}.
get_zmq_publisher() ->
case pg2:get_closest_pid([zmq]) of
{error, {no_such_group, _}} ->
pg2:create([zmq]),
get_zmq_publisher();
{error, {no_process, _}} ->
Pid = spawn(?MODULE, zmq_publisher, []),
pg2:join([zmq], Pid),
{ok, Pid};
Pid ->
{ok, Pid}
end.
zmq_publisher() ->
{ok, _Pid} = zmq:start_link(),
{ok, Socket} = zmq:socket(pub),
zmq:bind(Socket, "tcp://127.0.0.1:5550"),
zmq_publisher(Socket).
zmq_publisher(Socket) ->
receive
{send, Msg} -> zmq:send(Socket, Msg), zmq_publisher(Socket)
end.
@lalebarde
Copy link

Hi, could you explain please what this is for, for the newbbie I am. I am appealed by riak for availability on one hand, and by 0MQ for ease of use and scallability on the other hand. Is riak_zmq the glue between both ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment