rabbitMQ 默认端口 5672
mnesia 非关系型数据库 存储交换机队列和绑定的元数据
启动rabbitMQ服务
/sbin rabbitmq-server
/sbin rabbitmqctl stop
/sbin rabbitmqctl stop-app 只停止rabbitMQ应用程序
默认日志:/var/log/rabbitmq/
配置文件:/etc/rabbitmq/rabbitmq.config
交换机类型
direct 直连
fanout 扇形
topic 主体
exchange_declare 声明交换机
queue_declare 声明队列
durable 队列和交换机的属性,是否持久化(默认false) rabbit服务器宕机或者重启后,队列和交换机是否自动创建,只要设置为ture,这样就能保证每次重启rabbit服务器,队列和交换机会自动创建
切记:队列里的消息还是会丢失
服务器宕机消息能恢复的三个条件:
1 把他的投递模式选项设置为2(持久 delivery mode)
2 发送到持久好的交换机
3 到达持久化的队列
生产者的步骤:
1 连接到rabbitMQ $conn = new AMQPConnection(HOST,PORT,USER,PASS);
2 获取信道 $channel = $conn->channel();
3 声明交换机 $channel->exchange_declare('logs-exchange','topic',false,true,false);
4 创建消息
5 发布消息
6 关闭信道
7 关闭连接
消费者的步骤:
1 链接到rabbitMQ $conn = new AMQPConnection(HOST,PORT,USER,PASS);
2 获得信道 $channel = $conn->channel();
3 声明交换机 $channel->exchange_declare('logs-exchange','topic',false,true,false);
4 声明队列 $channel->queue_declare('msg-inbox-logs',false,true,false,false);
5 把队列和交换机绑定 $channel->queue_bind('msg-inbox-logs','logs-exchange','error.msg-inbox');
6 消费消息
7 关闭信道
8 关闭连接
查看rabbitmq版本
./sbin/rabbitmqctl status | grep rabbit
./sbin/rabbitmqctl version
用户管理
./sbin//rabbitmqctl add_user xiaopzi 123456
./sbin/rabbitmqctl delete_user xiaopzi
./sbin/rabbitmqctl list_users
./sbin/rabbitmqctl change_password xiaopzi 111111
权限系统
1.6.0版本开始,有了ACL风格的权限系统,之前只能对vhost进行授权和访问
读:有关消费消息的任何操作,包括清除整个队列(同样需要绑定操作的成功)
写:发布消息(同样需要绑定操作的成功)
配置:队列和交换机的创建和删除
AMQP命令:
exchange_declare
exchange_delete
queue_declare
queue_delete
queue_bind
basic_publish
basic_get
basic_consume
queue_purge
谨记:访问控制条目不能跨vhost,如果让一个用户对两个vhost有相同的权限,必须创建两份相同的访问控制条目
./sbin/rabbitmqctl set_permissions -p vhost_name user_name ".*" ".*" ".*" (配置 写 读)
./sbin/rabbitmqctl cleaar_permissoins -p vhost_name user_name
./sbin/rabbitmqctl list_permissions -p vhost_name (不指定-p 默认是 / vhost)
./sbin/rabbitmqctl list_user_permissions user_name (查看用户的所有vhost的权限)
vhost
.sbin/rabbitmqctl add_vhost vhost_name
.sbin/rabbitmqctl list_vhosts
./sbin/rabbitmqctl delete_vhost vhost_name
列出队列和消息数目
./sbin/rabbitmqctl list_queues
./sbin/rabbitmqctl list_queues -p vhost_name
./rabbitmqctl list_queues name durable auto_delete
./rabbitmqctl list_queues name messages consumers memory
查看交换机和绑定
./sbin/rabbitmqctl list_exchanges
./rabbitmqctl list_exchanges name type durable auto_delete
./sbin/rabbitmqctl list_bindings
日志
./sbin/rabbitmqctl rotate_logs .1 轮回日志
rabbitMQ高可用的两种方法:
1 集群
2 warren 另一种集群方式
shovel rabbitmq服务器之间复制消息的插件
启动(2.7.0开始):./sbin/rabbitmq-plugins enable amqp_client
配置:配置文件在rabbitmq.config文件中