`
flyingdutchman
  • 浏览: 358569 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

RabbitMQ:基础,运行和管理

阅读更多
        在本章中我们来学习一下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

       
  • 大小: 34.5 KB
  • 大小: 30.9 KB
  • 大小: 36 KB
  • 大小: 133.4 KB
分享到:
评论

相关推荐

    高效安装与配置RabbitMQ:CentOS 7系统下的完全指南

    Erlang是RabbitMQ的基础,因为它提供了RabbitMQ运行所需的环境。这里以`erlang-18.3-1.el7.centos.x86_64.rpm`和`rabbitmq-server-3.6.5-1.noarch.rpm`为例,你可以通过`rpm -ivh`命令分别安装这两个软件包。 接着...

    RabbitMQ实战:高效部署分布式消息队列 pdf版

    - **监控与日志**:通过RabbitMQ的监控工具和日志分析,确保服务的稳定运行。 - **性能优化**:调整配置参数,提高RabbitMQ的性能和吞吐量。 **7. 实战案例** - **微服务间通信**:在微服务架构中使用RabbitMQ进行...

    rabbitmq-3.8.3.rar

    安装完成后,可以通过命令行或Web管理界面启动和管理RabbitMQ服务,创建和配置交换器、队列、绑定,以及管理用户和权限。对于开发者来说,理解RabbitMQ的基本概念如生产者、消费者、队列、交换器和绑定至关重要,...

    rabbitmq-server-3.8.3安装包

    - Windows用户需运行`rabbitmq_server-3.8.3\sbin\rabbitmq-server.bat`启动服务。 4. **插件管理**:RabbitMQ的一些功能如Web管理界面(rabbitmq_management)默认可能未启用,可以通过命令行启用:`rabbitmq-...

    RabbitMQ与SpringMVC集成

    安装Erlang OTP对RabbitMQ来说至关重要,因为它为RabbitMQ提供了运行的基础环境。例如,提供的`otp_win64_18.0.exe`文件就是Erlang OTP的Windows 64位版本安装包,用户需要根据自己的操作系统选择合适的版本进行安装...

    otp_win64_20.3 rabbitmq windows 基础依赖

    在Windows上部署RabbitMQ之前,需要安装其基础依赖,其中包括Erlang OTP(Open Telephony Platform)运行环境。标题中的"otp_win64_20.3"是指Erlang OTP的64位Windows版本,版本号为20.3。这个版本是RabbitMQ在...

    RabbitMQ实战:高效部署分布式消息队列

    1. **RabbitMQ基础**:首先,书中会介绍RabbitMQ的基本概念,包括生产者、消费者、交换机、队列和绑定等关键元素。这些是理解RabbitMQ工作原理的基础。 2. **安装与配置**:详细阐述如何在不同的操作系统上安装...

    RabbitMQ linux 安装包和安装环境

    在Linux环境中安装RabbitMQ,我们需要遵循一系列步骤,确保安装过程顺利并为后续的使用打下基础。 首先,为了安装RabbitMQ,我们的Linux系统应该已经更新到最新版本,并且安装了Erlang,因为RabbitMQ是用Erlang编程...

    消息队列+RabbitMQ3.12.10和Erlang安装包

    在本资源中,我们有两个安装包:RabbitMQ 3.12.10和Erlang 26.0.2,这两个是RabbitMQ运行所必需的组件。 Erlang是一种函数式编程语言,以其并发能力、容错性和热代码升级功能而闻名。在RabbitMQ中,Erlang作为基础...

    macOS-rabbitmq_server-3.7.10.zip

    Erlang提供了RabbitMQ运行所需的所有基础工具和库。你可以从Erlang Solutions官网下载适用于macOS的Erlang OTP(Open Telecom Platform)版本。确保下载的Erlang版本与RabbitMQ兼容,因为不同版本的RabbitMQ可能需要...

    rabbitmq安装包.zip

    **RabbitMQ基础介绍** RabbitMQ是一款开源的消息队列系统,它基于AMQP(Advanced Message Queuing Protocol)协议,广泛应用于分布式系统中,用于处理异步任务、解耦组件以及实现消息通信。RabbitMQ由 Erlang 语言...

    rabbitmq源码包(rabbitmq+erlang)

    在使用过程中,了解如何管理和监控RabbitMQ至关重要,包括如何创建和删除队列、绑定和交换、查看队列状态以及使用RabbitMQ管理界面。此外,熟悉Erlang的并发模型和错误处理机制也有助于更好地理解和调试RabbitMQ相关...

    rabbitMQ课件.zip

    **RabbitMQ基础** RabbitMQ是一个开源的消息队列系统,基于AMQP(Advanced Message Queuing Protocol)协议,用于在分布式系统中实现可靠的消息传递。它允许应用程序通过发送消息进行异步通信,从而提高系统的可...

    RabbitMQ 安装配置

    Erlang是RabbitMQ的基础,首先需要下载Erlang的RPM包。在提供的压缩包中,我们找到了`erlang-18.1-1.el6.x86_64.rpm`这个文件。可以按照以下步骤安装: 1. 打开终端。 2. 使用`cd`命令将当前目录切换到RPM包所在的...

    akka-rabbitmq:Scala和Akka演员中的RabbitMq客户端

    Akka-RabbitMQ是将RabbitMQ消息队列服务与Scala...通过Akka-RabbitMQ,开发者可以利用Akka的强大力量来构建可靠的、分布式的消息驱动系统,与RabbitMQ的稳定性和灵活性相结合,为复杂的企业级应用提供健壮的基础设施。

    RabbitMQ3.9.15安装包及安装文档

    - 插件管理:RabbitMQ的许多功能通过插件实现,如管理控制台,可以使用`rabbitmq-plugins enable rabbitmq_management`启用。 6. **安全与访问控制**:默认情况下,RabbitMQ的管理控制台是关闭的,可以通过`...

    rabbitMq安装教程以及软件

    `otp_win64_20.2.exe` 是Erlang OTP(Open Telecom Platform)的Windows 64位版本,它是RabbitMQ运行的基础环境,因为RabbitMQ是用Erlang编写的。Erlang是一种并发性强、容错性高的编程语言,特别适合构建分布式系统...

    xp系统可安装运行的rabbitmq和erlang

    总结,尽管Windows XP系统已经过时,但通过选择合适的Erlang和RabbitMQ版本,以及正确配置和管理,依然可以在这种环境下运行这些工具。然而,强烈建议升级到更新的操作系统以获得更好的安全性和性能。

    terraform-aws-rabbitmq:用于在AWS上创建RabbitMQ集群的Terraform配置

    通过以上步骤,我们可以使用Terraform和AWS来自动化创建、管理和更新RabbitMQ集群,实现高效的基础设施管理,并确保高可用性和安全性。在实际应用中,还应考虑监控、日志记录、备份策略等其他重要方面,以确保系统的...

Global site tag (gtag.js) - Google Analytics