本文共 6489 字,大约阅读时间需要 21 分钟。
running on 127.0.0.1 (localhost) on port 5672 (standard AMQP port).
$ sudo apt-get install rabbitmq-server
# yum install -y rabbitmq-server# chkconfig rabbitmq-server on# service rabbitmq-server start
添加用户, 添加权限, 删除guest用户
# rabbitmqctl add_user rabbit password# rabbitmqctl set_permissions -p "/" rabbit ".*" ".*" ".*"# rabbitmqctl delete_user guest
curl -s https://raw.githubusercontent.com/oscm/shell/master/mq/rabbitmq/rabbitmq-server-3.6.10.sh | bashrabbitmqctl add_user admin admin123rabbitmqctl set_user_tags admin administratorrabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
[root@netkiller ~]# ss -lnt | grep 5672LISTEN 0 128 *:25672 *:* LISTEN 0 128 :::5672 :::*
rabbitmqctl status
rabbitmqctl change_password admin
# rabbitmqctl list_usersListing users ...guest [administrator]...done.
$ rabbitmqctl add_vhost test$ rabbitmqctl add_user testuser password$ rabbitmqctl set_permissions -p test testuser ".*" ".*" ".*"
# rabbitmqctl list_queuesListing queues ...amq.gen-RhBwbb9EdZ8Fgk_heGZQ2w 0bb 0customer 276930demo 0email 0example 0hello 1members_id 282new_members_id 0q_linvo 0real 0...done.
# rabbitmqctl list_exchangesListing exchanges ... directamq.direct directamq.fanout fanoutamq.headers headersamq.match headersamq.rabbitmq.log topicamq.rabbitmq.trace topicamq.topic topicemail direct...done.
启用插件
rabbitmq-plugins enable rabbitmq_management
RabbitMQ Management HTTP API (https://cdn.rawgit.com/rabbitmq/rabbitmq-management/rabbitmq_v3_6_0/priv/www/api/index.html)
启用插件 Management and Monitoring 插件
rabbitmq-plugins enable rabbitmq_managementsystemctl restart rabbitmq-server
# curl -u guest:guest http://localhost:15672/api/overview{"management_version":"3.3.5","statistics_level":"fine","exchange_types":[{"name":"topic","description":"AMQP topic exchange, as per the AMQP specification","enabled":true},{"name":"fanout","description":"AMQP fanout exchange, as per the AMQP specification","enabled":true},{"name":"direct","description":"AMQP direct exchange, as per the AMQP specification","enabled":true},{"name":"headers","description":"AMQP headers exchange, as per the AMQP specification","enabled":true}],"rabbitmq_version":"3.3.5","cluster_name":"rabbit@iZ623qr3xctZ","erlang_version":"R16B03-1","erlang_full_version":"Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:8:8] [async-threads:30] [hipe] [kernel-poll:true]","message_stats":{},"queue_totals":{"messages":0,"messages_details":{"rate":0.0},"messages_ready":0,"messages_ready_details":{"rate":0.0},"messages_unacknowledged":0,"messages_unacknowledged_details":{"rate":0.0}},"object_totals":{"consumers":1,"queues":3,"exchanges":10,"connections":1,"channels":1},"node":"rabbit@iZ623qr3xctZ","statistics_db_node":"rabbit@iZ623qr3xctZ","listeners":[{"node":"rabbit@iZ623qr3xctZ","protocol":"amqp","ip_address":"::","port":5672},{"node":"rabbit@iZ623qr3xctZ","protocol":"clustering","ip_address":"::","port":25672}],"contexts":[{"node":"rabbit@iZ623qr3xctZ","description":"RabbitMQ Management","path":"/","port":15672}]}
vhosts
# curl -u guest:guest http://localhost:15672/api/vhosts[{"messages":0,"messages_details":{"rate":0.0},"messages_ready":0,"messages_ready_details":{"rate":0.0},"messages_unacknowledged":0,"messages_unacknowledged_details":{"rate":0.0},"recv_oct":617,"recv_oct_details":{"rate":0.0},"send_oct":625,"send_oct_details":{"rate":0.0},"name":"/","tracing":false}]
queues
# curl -s -u guest:guest http://localhost:15672/api/queues/%2f/example | sed 's/,/,\n/g'{"message_stats":{"ack":817,"ack_details":{"rate":0.8},"deliver":829,"deliver_details":{"rate":0.8},"deliver_get":829,"deliver_get_details":{"rate":0.8},"publish":33700,"publish_details":{"rate":22.4},"redeliver":9,"redeliver_details":{"rate":0.0}},"messages":32884,"messages_details":{"rate":39.2},"messages_ready":32881,"messages_ready_details":{"rate":39.2},"messages_unacknowledged":3,"messages_unacknowledged_details":{"rate":0.0},"policy":"","exclusive_consumer_tag":"","consumers":1,"consumer_utilisation":0.00005551817727208515,"memory":34387224,"backing_queue_status":{"q1":0,"q2":0,"delta":["delta",0,0,0],"q3":0,"q4":32881,"len":32881,"pending_acks":3,"target_ram_count":"infinity","ram_msg_count":32881,"ram_ack_count":3,"next_seq_id":33700,"persistent_count":0,"avg_ingress_rate":31.071205055112543,"avg_egress_rate":0.7083061832348867,"avg_ack_ingress_rate":0.7083061832348867,"avg_ack_egress_rate":0.7083061832348867},"state":"running","incoming":[{"stats":{"publish":33700,"publish_details":{"rate":22.4}},"exchange":{"name":"email","vhost":"/"}}],"deliveries":[{"stats":{"redeliver":3,"redeliver_details":{"rate":0.0},"deliver_get":348,"deliver_get_details":{"rate":0.8},"deliver":348,"deliver_details":{"rate":0.8},"ack":345,"ack_details":{"rate":0.8}},"channel_details":{"name":"127.0.0.1:41033 -> 127.0.0.1:5672 (1)","number":1,"connection_name":"127.0.0.1:41033 -> 127.0.0.1:5672","peer_port":41033,"peer_host":"127.0.0.1"}}],"consumer_details":[{"channel_details":{"name":"127.0.0.1:41033 -> 127.0.0.1:5672 (1)","number":1,"connection_name":"127.0.0.1:41033 -> 127.0.0.1:5672","peer_port":41033,"peer_host":"127.0.0.1"},"queue":{"name":"example","vhost":"/"},"consumer_tag":"amq.ctag-6BSkZzt3eWgBG5Jn2nl4QA","exclusive":false,"ack_required":true,"prefetch_count":3,"arguments":{}}],"name":"example","vhost":"/","durable":true,"auto_delete":false,"arguments":{},"node":"rabbit@iZ623qr3xctZ"}
sudo apt-get install python-setuptools python-pip git-coresudo pip install pikasudo easy_install pika
$ sudo gem install amqp
例 33.1. Ruby on RabbitMQ
subscriber.rb
$ cat subscriber.rbrequire 'rubygems'require 'amqp'EM.run { amq = MQ.new amq.queue("logins").subscribe do |login| puts login end}
producer.rb
$ cat producer.rbrequire 'rubygems'require 'amqp'EM.run { amq = MQ.new queue = amq.queue("logins") %w[scott nic robi].each { |login| queue.publish(login) }}
test
$ ruby subscriber.rb$ ruby producer.rb
原文出处:Netkiller 系列 手札
本文作者:陈景峯 转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。