博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第 33 章 Message Queuing & RPC
阅读量:7089 次
发布时间:2019-06-28

本文共 6489 字,大约阅读时间需要 21 分钟。

33.1.1. 安装 RabbitMQ

running on 127.0.0.1 (localhost) on port 5672 (standard AMQP port).

33.1.1.1. Ubuntu

$ sudo apt-get install rabbitmq-server

33.1.1.2. CentOS

# 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

33.1.1.3. OSCM 一键安装

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 ".*" ".*" ".*"

33.1.1.4. 检查端口

[root@netkiller ~]# ss -lnt | grep 5672LISTEN     0      128          *:25672                    *:*                  LISTEN     0      128         :::5672                    :::*

33.1.2. rabbitmqctl - command line tool for managing a RabbitMQ broker

rabbitmqctl status

33.1.2.1. change_password

rabbitmqctl change_password admin 

33.1.2.2. list_users

# rabbitmqctl list_usersListing users ...guest	[administrator]...done.

33.1.2.3. 虚拟机管理

$ rabbitmqctl add_vhost test$ rabbitmqctl add_user testuser password$ rabbitmqctl set_permissions -p test testuser ".*" ".*" ".*"

33.1.2.4. list_queues

# rabbitmqctl list_queuesListing queues ...amq.gen-RhBwbb9EdZ8Fgk_heGZQ2w	0bb	0customer	276930demo	0email	0example	0hello	1members_id	282new_members_id	0q_linvo	0real	0...done.
 
 

33.1.2.5. list_exchanges

# rabbitmqctl list_exchangesListing exchanges ...	directamq.direct	directamq.fanout	fanoutamq.headers	headersamq.match	headersamq.rabbitmq.log	topicamq.rabbitmq.trace	topicamq.topic	topicemail	direct...done.

33.1.3. rabbitmq-plugins - command line tool for managing RabbitMQ broker plugins

启用插件

rabbitmq-plugins enable rabbitmq_management

33.1.3.1. 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"}

33.1.4. Python - Pika

sudo apt-get install python-setuptools python-pip git-coresudo pip install pikasudo easy_install pika

33.1.5. Ruby amqp

$ 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 系列 手札

本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

你可能感兴趣的文章
ADO 连接数据库,取到VT_DATE型日期转换成 int型
查看>>
Caused by: java.lang.NoClassDefFoundError: org/apache/neethi/AssertionBuilderFactory
查看>>
好用的端口监控软件:Port Explorer
查看>>
Mysql数据类型DECIMAL(M,D)用法
查看>>
android adb命令行工具使用
查看>>
javascript 正则替换字符的新方法!
查看>>
WayOs 帐号到期自动清理工具,致浪费在清理到期用户的青春
查看>>
13 SELECT 以外的内容
查看>>
.NET平台开源项目速览(9)软件序列号生成组件SoftwareProtector介绍与使用
查看>>
简述Session 、Cookie、cache 区别
查看>>
large-scale analysis of malware downloaders
查看>>
FMX 模态窗体
查看>>
C语言编程规范—命名规则
查看>>
Java集合源码分析(二)Linkedlist
查看>>
sqlplus: error while loading shared libraries: /u01/app/lib/libclntsh.so.11.1
查看>>
dubbo工作原理
查看>>
maven_项目的依赖、聚合、继承
查看>>
一个C++类的注释:
查看>>
Winsock IO模型之select模型
查看>>
flutter安装开发环境-问题记录
查看>>