Skip to content

Instantly share code, notes, and snippets.

@ngerakines
Created May 5, 2009 19:29
Show Gist options
  • Select an option

  • Save ngerakines/107149 to your computer and use it in GitHub Desktop.

Select an option

Save ngerakines/107149 to your computer and use it in GitHub Desktop.
-module(stocks).
-include_lib("rabbitmq_server/include/rabbit.hrl").
-include_lib("rabbitmq_server/include/rabbit_framing.hrl").
-include_lib("rabbitmq_erlang_client/include/amqp_client.hrl").
-compile(export_all).
% {Channel, X, RoutingKey} = stocks:start().
% Consumer = spawn(stocks, start_consumer, [Channel, RoutingKey, X, 1]).
% Consumer2 = spawn(stocks, start_consumer, [Channel, RoutingKey, X, 2]).
% lib_amqp:publish(Channel, X, RoutingKey, <<"foobar">>).
% Consumer3 = spawn(stocks, start_consumer, [Channel, RoutingKey, X, 3]).
% Consumer4 = spawn(stocks, start_consumer, [Channel, RoutingKey, X, 4]).
% lib_amqp:publish(Channel, X, RoutingKey, <<"foobaz">>).
% lib_amqp:publish(Channel, X, RoutingKey, <<"foobab">>).
new_connection() ->
amqp_connection:start("guest", "guest", "localhost").
start() ->
Connection = amqp_connection:start("guest", "guest", "localhost"),
io:format("start/0 Connection '~p'~n", [Connection]),
Channel = lib_amqp:start_channel(Connection),
io:format("start/0 Channel '~p'~n", [Channel]),
X = uuid(),
DeclareExchange = lib_amqp:declare_exchange(Channel, X),
io:format("start/0 DeclareExchange '~p'~n", [DeclareExchange]),
RoutingKey = uuid(),
io:format("start/0 RoutingKey '~p'~n", [RoutingKey]),
{Channel, X, RoutingKey}.
start_consumer(Channel, RoutingKey, X, Tag) ->
Q = lib_amqp:declare_queue(Channel),
io:format("start/0 Q '~p'~n", [Q]),
BindQueue = lib_amqp:bind_queue(Channel, X, Q, RoutingKey),
io:format("start/0 BindQueue '~p'~n", [BindQueue]),
SubScribe = lib_amqp:subscribe(Channel, Q, self(), <<Tag:32>>),
io:format("start_consumer/4 SubScribe '~p'~n", [SubScribe]),
consumer_loop().
consumer_loop() ->
receive
Msg ->
io:format("consumer_loop/0 Msg '~p'~n", [Msg]),
ok
end,
consumer_loop().
uuid() ->
{A, B, C} = now(),
<<A:32, B:32, C:32>>.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment