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

文章图片
权限映射.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
推荐阅读
- 做一件事情的基本原理是什么()
- dubbo基本认识
- 你命令我爱你吧(原创)
- HTML基础--基本概念--跟着李南江学编程
- 7、前端--jQuery简介、基本选择器、基本筛选器、属性选择器、表单选择器、筛选器方法、节点操作、绑定事件
- 一般模型化关系——从模型是什么到如何起作用的基本答案
- canvas(一)基本用法
- 常用git命令总结
- 带你了解类型系统以及flow和typescript的基本使用
- MySQL数据库的基本操作