RabbitMQ

基本命令

#将信道置为可接收模式,自动接收下一条 basic.consume #从队列中获取单条消息 basic.get##确认(收到)消息 #显示发送消费成功的确认 basic.ack #一旦接收,自动确认消费成功 auto_act=true ##拒绝收到的消息(没成功处理) (requeue=true)将消息重发下个消费者 (requeue=false)将消息移除代替确认消息 basic.reject(requeue)#投递模式 delivery mode2#将消息标记成持久化 发布到持久化交换器并到持久化队列中#信道设置为confirmnack channel.confirm_delivery(callback=confirm_handler) def confirm_handler(args): if(args.method == Confirm.SelectOk) print channel confirm ok if(args.method == Basic.Nack) if(args.method == Basic.Ack)#创建交换器 exchange_declare(exchange_name,exchange_type,passive,durable,auto_delete) params: - exchange_type [topic|direct|fanout] - durable= true #持久化 重启是否重建队列、交换器 - auto_delete #最后一个消费者取消订阅,队列自动删除 - passsive #检测队列是否存在存在返回ture反 返回错误#创建队列 queue.declare(queue_name) params: - exclusive #默认私有队列,限制队列只有一个消费者 - auto_delete #最后一个消费者取消订阅,队列自动删除 - durable= true #持久化 重启是否重建队列、交换器 - passsive #检测队列是否存在存在返回ture反 返回错误#绑定交换器到队列(通过route_key) queue_bind(queue_name,exchange_name,route_key) params: - route_key “*.msg”.拆分 *匹配任意文本“#” #匹配所有规则#发布消息 basic_publish(msg,exchange_name,route_key) params: - route_key “*.msg”.拆分 *匹配任意文本“#” #匹配所有规则#消费消息 basic_consume(fun,queue_name,consumer_tag) params - no_ackfalse 显示确认消息处理完成并发送确认消息为止再接收新的消息 #确认消息 basic_ack(delevery_tag)#循环处理 basic_start_consuming() #结束消费(关闭信道,连接) basic_cancel(consumer_tag) #取消循环处理 basic_stop_consuming()#rpc 回调 reply_to

运行管理
#启动节点 rabbitmq -server -detached #停止节点包括erlang rabbitmqctl stop[-n rabbit@[hostname]] #只停止mq 不停止整个节点 rabbitmqctl stop_app#用户相关命令 rabbitmqctl add_user user_name pwd rabbitmqctl delete_user user_name rabbitmqctl list_users rabbitmqctl chang_password user_name new_pwd#创建vhost rabbitmqctl add_vhost vhost_name rabbitmqctl delete_vhost vhost_name rabbitmqctl list_vhosts#设置权限 参考 权限映射.png rabbitmqctl set_permission -p vhost_name -s all user_name ".*" ".*" ".*"正则分别为配置写读#查看vhost相关的权限配置 rabbitmqctl list_permissions -p vhost_name#删除用户在某个vhost的权限 rabbitmqctl clear_permissions -p vhost_name user_name#查看用户在所有vhost上的权限 rabbitmqctl list_user_permissions user_name#列出队列和消息数目 rabbitmqctl list_queues [-p vhost_name] [durable auto_delete messages consumers memory synchronised_slaved_pids ...]#查看交换器和绑定 rabbitmqctl list_exchanges [name type durable auto_delete arguments]## 轮换日志重新创建日志并在旧的日志文件后面添加suffix.1 rabbitmqctlrotate_logs .1#rabbit日志默认的topic交换器 amq.rabbitmq.log

RabbitMQ
文章图片
权限映射.png 集群
##单台机器上 #关闭所有的插件 rabbitmq_node_port = 5672 rabbitmq_modename = rabbit \ ./sbin/rabbitmq-server -detached rabbitmq_node_port = 5673 rabbitmq_modename = rabbit_1 \ ./sbin/rabbitmq-server -detached rabbitmq_node_port = 5674 rabbitmq_modename = rabbit_2\ ./sbin/rabbitmq-server -detached#停止节点 ./sbin/rabbitmqctrl - n rabbit_1@hostname stop_app #重设节点,清空状态 ./sbin/rabbitmqctrl -n rabbit_1@hostname reset #加入第一个集群节点 指定为磁盘节点 ./sbin/rabbitmqctrl -n rabbit_1@host cluster rabbit@hostname \ rabbit_1@hostname #加入集群节点 为内存节点 ./sbin/rabbitmqctrl -n rabbit_2@host cluster rabbit@hostname \ rabbit_1@hostname #重新启动第二个节点 ./sbin/rabbitmqctrl -n rabbit_1@hostname start_app#查看集群 ./sbin/rabbitmqctl cluster_status##多个机器上 ip1 ip2磁盘节点 rabbitmqctrl stop_app rabbitmqctl reset # 清空节点,并恢复到空白状态 rabbitmqctl cluster rabbit@ip1 rabbit@ip2 #镜像队列 queue_args = {"x-ha-policy" : "all"} #在所有节点上镜像 queue_args = {"x-ha-policy" : "nodes","x-ha-policy-params":["rabbit@hostname"]}#指定节点上镜像 channel.queue_declare(queue_name,queue_args)#启用management插件 rabbitmq-plugins enable rabbitmq_management

https://blog.csdn.net/u013871100/article/details/82982235
https://www.cnblogs.com/williamjie/p/9481780.html
【RabbitMQ】https://www.cnblogs.com/boshen-hzb/p/6840064.html
https://hub.docker.com/_/rabbitmq/?tab=description

    推荐阅读