打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
RabbitMQ:基础,运行和管理

        RabbitMQ是一个高性能的工业级的AMQP协议、使用erlang语言创建的开源的消息服务器,可以同步或异步发送或接受消息。 

        RabbitMQ基础知识 
        Broker:简单来说就是消息队列服务器实体,可以把一个rabbitmq server当作一个broker。        
        Exchange交换机: 
        Exchange负责对消息进行路由,是一个路由规则。当收到 Publisher 传递给它的消息后,Exchange会根据路由键routing_key决定将消息加入到哪些消息队列中。 
        RabbitMQ有四种类型的exchange:direct,fanout,topic,headers,经常使用的是下面三种: 
        Direct Exchange:处理路由键,使用一个固定字符串作为路由键routing_key,若exchange和message queue 绑定的key和routing_key一样时,消息会被路由到绑定的这个 message queue中。 
        Fanout Exchange:不处理路由键,会将发布的消息路由到该注册Exchange的所有的message queue中,和ActiveMQ的发布订阅模式很像。 
        Topic Exchange:主题交换类型,routing key 中可以包括通配符。这里使用的通配符主要是"*"和"#",比如用户生名了两个queue: Q1(routing_key="rk.*")和Q2(routing_key="rk.#"),现在有人向Q1和Q2所绑定的topic exchange发布了2条消息,routing_key分别为"rk.1"和"rk.m.2",那么Q1只能接受到rk.1的这条消息,而Q2则可接受到这两条消息。 
        通配符:* 表示一个词 # 表示0个或多个词。 
        Queue队列: 
        消息队列载体,每个消息都会被投入到一个或多个队列。 
        Binding绑定: 
        它的作用就是把exchange和queue按照路由规则绑定起来。 
        vhost虚拟主机 
        一个broker里可以开设多个vhost,用作不同用户的权限分离,也可以把他看作明名空间。 
        Routing_Key路由关键字exchange根据这个关键字进行消息投递。 
        Channele消息通道:客户端的每个连接里,可建立多个channel,每个channel代表一个会话任务。 

        持久化消息和非持久化消息 
        默认情况下,用户发送的消息是非持久化的,也就是说如果要接收消息的rabbitmq server宕机——在没有被消费者接收处理之前,重新启动后消息将不存在,及消息会丢失。 
        在学习如何将消息“装配”成持久化消息之前,我们先看一下Exchange和Queue的类型。实际上rabbitmq中的交换机Exchange和消息队列Queue都分为持久化和非持久化的两种类型,当然消息Message也分为持久化和非持久化的,并且在默认情况下都是非持久化的。也就是说默认情况下用户创建的exchange、queue在服务器重启后都将不存在——服务器不会重建(re-create),消息也会lost,其元数据信息回报存在服务器的内存中而非写道服务器的磁盘上。 
        如果用户想要发布持久化的消息,那么需要满足一下3个条件: 
        1、将消息发布模式选项设置为2; 
        2、将消息发布到一个持久化的exchange; 
        3、消息最终保存到一个持久化的queue。 
        但是,持久化的消息相对于非持久化的消息来说,服务器性能麾下将很多。 

        消息生产者如何确认消息发布成功呢? 
        默认情况下,当用户也即消息生产者将消息发不出去后,会发生什么事情呢?答案是什么也不会发生——对用户来说。这也就是说,消息发布后,就没有消息生产者什么事儿了,用户就不知道消息是发布成功了还是失败了。 
        那么,如果用户也即消息生产者想要知道自己是否成功发送消息的话,可以使用“transations”和“publisher confirms”这两种方式来处理消息发送。transations,也就是事务——就像是传统数据库中的事务,提交后会给发布者返回发布是否成功的信息。publisher confirms和transations都会接收到消息是否发布成功的信息,两者不同的是,transations是同步的,而publisher confirms方式是异步的。 

        RabbitMQ运行和管理 
        下面是一些常用的rabbitmq启动和停止操作:引用 
        # cd /opt/mq/rabbitmq/sbin 
        # ./rabbitmq-server //启动服务器 
        # ./rabbitmqctl start_app //启动application 
        # ./rabbitmqctl stop //停止服务器 
        # ./rabbitmqctl stop_app //停止application
 
        

        常用的rabbitmq服务管理操作:引用 
        # ./rabbitmqctl list_vhosts  //查看当前rabbitmq上的vhost列表 
        # ./rabbitmqctl add_vhost demo //添加名为"demo"的vhost虚拟主机 
        # ./rabbitmqctl delete_vhost demo  //删除名为"demo"的vhost虚拟主机 

        # ./rabbitmqctl list_users  //查看当前rabbitmq上的user列表 
        # ./rabbitmqctl add_user test test  //添加test用户并将密码设置为test 
        # ./rabbitmqctl delete_user test  //删除test用户 
        # ./rabbitmqctl change_password test test2 //将test用户的密码修改为test2 
        # ./rabbitmqctl clear_password test //清除test用户的密码 

        //设置或修改用户权限 
        # ./rabbitmqctl set_permissions -p demo test ".*" ".*" ".*" 
           -p demo:demo虚拟主机 
           test:要赋予权限的用户,即给用户test在demo虚拟主机上赋予权限 
           ".*" ".*" ".*":用户test在demo虚拟主机上赋予权限,按顺序为configure(配置)、write(写)和read(读)的权限 
           ".*"表示米陪任何exchange和queue;""表示不匹配任何的exchange和queue;另外还有另外一种匹配方式——正则式匹配,如"checker-*"表示匹配任何以checker-开头的任何的exchange和queue。 
        # ./rabbitmqctl list_permissions -p demo //查看demo虚拟主机上用户权限列表 
        # ./rabbitmqctl list_user_permissions test //查看test用户在所有虚拟主机的配置权限列表 
        # ./rabbitmqctl clear_permissions -p demo test //删除demo虚拟主机上test用户的权限 

        # ./rabbitmqctl list_queues 
        # ./rabbitmqctl list_queues -p demo 
        # ./rabbitmqctl list_queues name durable auto_delete //查看队列详细信息:名字 是否持久化 是否自动删除 

        # ./rabbitmqctl list_exchanges 
        # ./rabbitmqctl list_exchanges -p demo 

        # ./rabbitmqctl list_bindings 
        # ./rabbitmqctl list_bindings -p demo 

        # ./rabbitmqctl list_consumers 
        # ./rabbitmqctl list_consumers -p demo 

        # ./rabbitmqctl status 
        # ./rabbitmqctl report 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
17-RabbitMQ高级特性-日志与监控
[Erlang 0080] RabbitMQ :VHost,Exchanges, Queues,Bindings and Channels
消息队列RabbitMQ入门介绍
NET下RabbitMQ实践[配置篇]
RabbitMQ用户角色及权限控制
【消息队列 MQ 专栏】RabbitMQ
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服