RabbitMQ

基本命令

#将信道置为可接收模式,自动接收下一条
basic.consume 
#从队列中获取单条消息
basic.get


##确认(收到)消息
#显示发送消费成功的确认
basic.ack        
#一旦接收,自动确认消费成功
auto_act=true 

##拒绝收到的消息(没成功处理)
(requeue=true)将消息重发下个消费者
(requeue=false)将消息移除   代替确认消息
basic.reject(requeue)


#投递模式
delivery mode  2  #将消息标记成持久化 发布到持久化交换器并到持久化队列中





#信道设置为confirm   nack
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_ack  false 显示确认消息处理完成并发送确认消息为止再接收新的消息
#确认消息
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
rabbitmqctl  rotate_logs .1

#rabbit日志默认的topic交换器
amq.rabbitmq.log

RabbitMQ_第1张图片
权限映射.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

https://www.cnblogs.com/boshen-hzb/p/6840064.html
https://hub.docker.com/_/rabbitmq/?tab=description

你可能感兴趣的:(RabbitMQ)