生产者工作模式:将消息 msg 发送给指定的交换器 exchange, 由交换器 exchange 根据指定的规则-路由键 (routing key) 决定投递到哪个队列 queue
消费者工作模式:声明一个队列,将队列绑定到交换器 exchange, 并指定接收消息的规则-路由键(routing key)
1.basic.consume 接收模式 消息已达到队列自动接收(使用使用basic.consume来实现高吞吐量)
2.basic.get 主动拉去一条数据
3.basic.ack 显式发送一个确认 (当参数auto_ack 设置 true 时,自动确认消息) 如果不确认将会不在发送消息
4.rabbit 2.0.0 之后 basic.reject 显式拒绝rabbit发送消息 如果把reject 命令的requeue参数设置true,rabbitmq将会重新发送下一个,如果为false,rabbit将会移除 (放到死信中)
5.queue.declare 创建队列 必须先取消订阅并将信道设置为 传输 模式。passive true 只检测不创建 durable true 为 持久化 exclusive 设置true 将会变成私有 auto-delete 自动删除 最后一个取消订阅就会移除队列
6.四种类型 direct fanout topic headers (headers抛弃)
可以 以队列名称 作为 路由键
direct (路由键匹配,投递到对应的队列) channel->basic_publish("消息内容","空字符 指定默认交换器","路由键") exchange.declare (创建队列设置合适参数)
fanout (将接收到的消息绑定到队列上 发送到所有指定交换器的队列,用于同一条消息,需要多种操作)
topic (来自不同源头的消息达到同一个队列) channel->basic_publish("消息内容","空字符 指定默认交换器","路由键") channel->queue_bind("队列名称","空字符 指定默认交换器","路由键 *.abc.abc模糊匹配 #匹配所有")
交换器、队列、绑定 根据绑定规则将队列绑定到交换器 消息发布到交换器 三种类型 基于路由键和交换器类型,服务器决定将消息投递到哪个队列
7.vhost 虚拟主机 默认vhost为 /
rabbitmqctl add_vhost 虚拟主机名称 创建虚拟主机 rabbitmqctl delete_vhost 虚拟主机名称 删除虚拟主机 rabbitmqctl list_vhosts 列出虚拟主机列表 通过 -n rabbit@ip 管理远程借点
8.持久化
默认重启之后 交换器与队列消失, 原因在于参数 durable 为 false
持久化 将 队列 与 交换器 durable 设置为 true 将消息队列的投递模式 delivery mode 设置为 2 标记持久化 (必须使用持久化投递模式2 发布到持久化的交换器 到达 发布到持久化的队列)
将信道设置成事务模式
9.rabbitmq
启动 ./sbin/rabbitmq-server 守护进程启动 ./sbin/rabbitmq-server -detached 停止 ./sbin/rabbitmqctl stop
指定端口与节点名称 RABBITMQ_NODENAME name RABBITMQ_NODE_PORT 5672 ./sbin/rabbitmq-server -detached
清空 ./sbin/rabbitmq-server -n name@ip reset
#添加集群 ./sbin/rabbitmqctl -n name1@ip reset cluster name1@ip reset name@ip reset
停止 ./sbin/rabbitmqctl stop_app 启动 ./sbin/rabbitmqctl start_app
10.rabbitmq-web
添加插件 ./sbin/rabbitmq-plugins enable rabbitmq_management 访问 127.0.0.1:15672
取消插件 ./sbin/rabbitmq-plugins disable rabbitmq_management
11.管理用户
新增 ./sbin/rabbitmqctl add_user user_name pass_word 删除 ./sbin/rabbitmqctl delete_user user_name 修改密码 ./sbin/rabbitmqctl change_user user_name pass_word
配置权限 ./sbin/rabbitmqctl set_permissions -p vhost_name user_name .* .* .* (配置 写 读) 清除权限 ./sbin/rabbitmqctl clear_permissions -p vhost_name user_name
列出权限列表 ./sbin/rabbitmqctl list_permissions -p vhost_name 列出用户权限列表 ./sbin/rabbitmqctl list_user_permissions user_name
列出交换器列表 ./sbin/rabbitmqctl list_exchanges -p vhost_name
列出队列列表 ./sbin/rabbitmqctl list_queues -p vhost_name
列出绑定列表 ./sbin/rabbitmqctl list_bindings -p vhost_name