rabbitMQ基本介绍

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文件中

相关推荐
Java 码农16 小时前
RabbitMQ集群部署方案及配置指南05
分布式·rabbitmq
Java 码农20 小时前
RabbitMQ集群部署方案及配置指南01
linux·服务器·rabbitmq
Overt0p20 小时前
抽奖系统(6)
java·spring boot·redis·设计模式·rabbitmq·状态模式
Java 码农20 小时前
RabbitMQ集群部署方案及配置指南04
分布式·rabbitmq
独自破碎E21 小时前
在RabbitMQ中,怎么确保消息不会丢失?
分布式·rabbitmq
Java 码农21 小时前
RabbitMQ集群部署方案及配置指南02
分布式·rabbitmq
bentengjiayou1 天前
Kafka和RabbitMQ相比有什么优势?
分布式·kafka·rabbitmq
零度@1 天前
Java 消息中间件 - RabbitMQ 全解(保姆级 2026)
java·rabbitmq·java-rabbitmq
奋进的芋圆1 天前
Java 延时任务实现方案详解(适用于 Spring Boot 3)
java·spring boot·redis·rabbitmq