RabbitMQ的安装与使用

安装(CentOS):

1. 准备依赖环境

yum install -y build-essential openssl openssl-devel unixODBC unixODBC-devel  make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz

2. 安装erlang, socat, rabbitmq

wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm
wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm
wget www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm
rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm
rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm
rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm

3. 修改配置文件

vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app

比如修改密码、配置等等,例如:loopback_users 中的 <<“guest”>>,只保留guest

4. 启动 RabbitMQ

启动rabbitmq-server start &
停止rabbitmqctl app_stop
管理插件: rabbitmq-plugins enable rabbitmq_management
访问地址http://192.168.10.127:15672/
默认用户: guest 密码: guest

验证rabbitmq是否启动
lsof -i:5672 // lsof -i :22 知道22端口被哪个进程占用
netstat -lnp|grep 7000 查看7000端口被哪个进程占用

RabbitMQ 管理命令

1. 启动、停止

  1. 服务的启动: rabbitmq-server start &
  2. 服务的停止: rabbitmqctl stop_app

2. 插件管理

  1. 查看插件列表:rabbitmq-plugins list
  2. 安装管理插件:rabbitmq-plugins enable rabbitmq_managenment
  3. 卸载管理插件:rabbitmq-plugins disable rabbitmq_managenment
  4. 访问地址:http://192.168.11.76:15672
  5. 日子文件路径:
    /var/log/rabbitmq/[email protected]
    /var/log/rabbitmq/[email protected]
  6. 路径: /usr/local/software
  7. 验证rabbitmq是否启动
    lsof -i:5672 // lsof -i :22 知道22端口被哪个进程占用
    netstat -lnp|grep 7000 查看7000端口被哪个进程占用

3. 管理

  1. 关闭应用:rabbitmqctl stop_app
  2. 启动应用:rabbitmqctl start_app
  3. 节点状态:rabbitmqctl status
  4. 添加用户:rabbitmqctl add_user username password
  5. 列出所有用户:rabbitmqctl list_users
  6. 删除用户: rabbitmqctl delete_user username
  7. 清除用户权限:rabbitmqctl clear_permissisons -p vhostpath username
  8. 列出用户权限:rabbitmqctl list_user_permissions username
  9. 修改密码:rabbitmqctl change_password username newpassword
  10. 设置用户权限: rabbitmqctl set_permissions -p vhostpath username
  11. 创建虚拟主机: rabbitmqctl add_vhost vhostpath
  12. 列出所有虚拟主机: rabbitmqctl list_vhosts
  13. 列出虚拟主机上所有权限:rabbitmqctl list_permissions -p vhostpath
  14. 删除虚拟主机:rabbitmqctl delete_vhost vhostpath
  15. 查看所有队列:rabbitmqctl list_queues
  16. 清除队列里的消息:rabbitmqctl -p vhostpath purge_queue blue

高级操作

  1. 移除所有数据,要在rabbitmqctl stop_app 之后使用:rabbitmqctl reset
  2. 组成集群命令:rabbitmqctl join_cluster [--ram]
  3. 查看集群状态: rabbitmqctl cluster_status
  4. 修改集群节点的存储形式:rabbitmqctl change_cluster_node_type disc | ram
  5. 忘记节点(摘除节点): rabbitmqctl forget_cluster_node [--offline]
  6. 修改节点名称:rabbitmqctl rename_cluster_node oldnode1 newnode1 [oldnode2] [newnode2 ...]

急速入门–消息生产与消费

  1. ConnectionFactory: 获取连接工厂
  2. Connection: 一个连接
  3. Channel: 数据通信信道,已发送和接收消息
  4. Queue: 具体的消息存储队列
  5. Producer & Consumer 生产和消费者

Exchange 交换机

Exchange: 接收消息,并根据路由建转发消息所绑定的队列

交换机属性

  1. Name: 交换机名称
  2. Type: 交换机类型 direct , topic, fanout, headers
  3. Durability: 是否需要持久化,true为持久化
  4. Atuto Delete: 当最后一个绑定到Exchange 上的队列删除后,自动删除该Exchange
  5. internal: 当前Exchange 是否用于RabbitMQ 内部使用,默认为False
  6. Arguments: 扩展参数,用于扩展AMQP 协议自定化使用

交换机类型

  1. Direct Exchange : 所有发送到Direct Exchange 的消息被转发到RouteKey中指定的Queue
    注意: Direct 模式可以使用RabbitMQ自带的Exchange:default Exchange,所以不需要将Exchange进行任何绑定(binding)操作,消息传递时,RouteKey必须完全匹配才会被队列接收,否则该消息会被抛弃。
    RabbitMQ的安装与使用_第1张图片
  2. Topic Exchange
    任何发送到Topic Exchange的消息都会被转发到所有关心routing_key中指定话题的Queue上
    1. 这种模式较为复杂,简单来说,就是每个队列都有其关心的主题,所有的消息都带有一个“标题”(routing_key),Exchange会将消息转发到所有关注主题能与routing_key模糊匹配的队列。
    2. 这种模式需要routing_key,也许要提前绑定Exchange与Queue。
    3. 在进行绑定时,要提供一个该队列关心的主题,如“#.log.#”表示该队列关心所有涉及log的消息(一个routing_key为”MQ.log.error”的消息会被转发到该队列)。
    4. “#”表示0个或若干个关键字,“”表示一个关键字。如“log.”能与“log.warn”匹配,无法与“log.warn.timeout”匹配;但是“log.#”能与上述两者匹配。
    5. 同样,如果Exchange没有发现能够与routing_key匹配的Queue,则会抛弃此消息。
      RabbitMQ的安装与使用_第2张图片
  3. Fanout Exchange

你可能感兴趣的:(RabbitMQ)