RabbitMQ tutorialsのErlangクライアントのサンプルコードを1行ずつ実行する
https://github.com/rabbitmq/rabbitmq-tutorials/tree/master/erlangにあるやり方で、Erlangクライアントのサンプルはすぐ動かせる。
$ git clone https://github.com/rabbitmq/rabbitmq-tutorials $ cd rabbitmq-tutorials/erlang $ wget http://www.rabbitmq.com/releases/rabbitmq-erlang-client/v2.7.0/rabbit_common-2.7.0.ez $ unzip rabbit_common-2.7.0.ez $ ln -s rabbit_common-2.7.0 rabbit_common $ wget http://www.rabbitmq.com/releases/rabbitmq-erlang-client/v2.7.0/amqp_client-2.7.0.ez $ unzip amqp_client-2.7.0.ez $ ln -s amqp_client-2.7.0 amqp_client
サーバはもう起動しているものとして、以下を実行する。
$ ./send.erl [x] Sent 'Hello World!' $ ./receive.erl [*] Waiting for messages. To exit press CTRL+C [x] Received <<"Hello World!">> ^C
このサンプルコードをerlang shellから1行ずつ対話的に実行したいが、.hrlファイルを-include_libする部分はシェルからでは実行できない。
#!/usr/bin/env escript %%! -pz ./amqp_client ./rabbit_common ./amqp_client/ebin ./rabbit_common/ebin -include_lib("amqp_client/include/amqp_client.hrl").
そこで、カレントディレクトリにuser_default.erlというファイルを作り、以下のような内容を記述する。
$ cat <<EOF > user_default.erl -module(user_default). -compile(export_all). -include_lib("amqp_client/include/amqp_client.hrl"). EOF
user_default.erlをコンパイルしておくと、次にerlang shellを起動したときに、user_defaultが自動的にロードされる。
$ erlc user_default.erl
必要なオプションを与えてerlang shellを起動し、tutorialsのコードの内容を1行ずつ実行してみる。
$ erl -pz ./amqp_client ./rabbit_common ./amqp_client/ebin ./rabbit_common/ebin ... 1> {ok, Connection} = 1> amqp_connection:start(#amqp_params_network{host = "localhost"}). {ok,<0.46.0>} 2> {ok, Channel} = amqp_connection:open_channel(Connection). {ok,<0.59.0>}