1. > 电脑手机 >

rabbitmq web管理界面(rabbitmq框架)

rabbitmq需要开哪些端口?

假设读者在Windows系列的操作系统中安装好了Rabbit MQ后,请找到安装路径下的etc文件夹下,将rabbitmq.config.example备份一份,并修改为config类型的文件,即为rabbitmq.config,

然后,打开rabbitmq.config,找到tcp_listeners这个key,将其前面的注释%%去掉,然后将后面的整数值5672改为你想要的端口号,如下图所示,那么你的端口号就修改好了

接着,找到heartbeat,去掉注释,将后面的心跳时间改为你想要的值,并记得去掉后面的逗号!!!

接下来需要编辑环境变量,在系统环境变量中新增变量名"RABBITMQ_CONFIG_FILE",值为你Rabbit MQ安装目录下的etcrabbitmq(注意,不要加;),详见下图。

最后,用命令对Rabbitmq服务停止、更新、启动。

登陆web管理界面,在Connections下的Timeout中看到的值是你所修改的,那么恭喜你,成功了!不是的话,请认真看本博文,再不行,可以找我。

rabbitmq web管理界面(rabbitmq框架)rabbitmq web管理界面(rabbitmq框架)


rabbitmq在web页面中如何查看json数据

消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在,这样能大大平台解耦能力,将每一个功能都具体到模块化操作

大致如图

1.3、消息队列大致术语

Broker:它提供一种传输服务,它的角色就是维护一条从生产者到消费者的路线,保证数据能按照指定的方式进行传输,

Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。

Queue:消息的载体,每个消息都会被投到一个或多个队列。

Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来.

Routing Key:路由关键字,exchange根据这个关键字进行消息投递。

vhost:虚拟主机,一个broker里可以有多个vhost,用作不同用户的权限分离。

rabbitmq需要开哪些端口?

假设读者在Windows系列的操作系统中安装好了Rabbit MQ后,请找到安装路径下的etc文件夹下,将rabbitmq.config.example备份一份,并修改为config类型的文件,即为rabbitmq.config,

然后,打开rabbitmq.config,找到tcp_listeners这个key,将其前面的注释%%去掉,然后将后面的整数值5672改为你想要的端口号,如下图所示,那么你的端口号就修改好了

接着,找到heartbeat,去掉注释,将后面的心跳时间改为你想要的值,并记得去掉后面的逗号!!!

接下来需要编辑环境变量,在系统环境变量中新增变量名"RABBITMQ_CONFIG_FILE",值为你Rabbit MQ安装目录下的etcrabbitmq(注意,不要加;),详见下图。

最后,用命令对Rabbitmq服务停止、更新、启动。

登陆web管理界面,在Connections下的Timeout中看到的值是你所修改的,那么恭喜你,成功了!不是的话,请认真看本博文,再不行,可以找我。

消息队列之zeroMQ、rabbitMQ、kafka

首先消息是网络通讯的载体,队列可以理解是一种先进先出的数据结构,消息队列是存放消息的容器,是分布式系统中的重要组件。消息队列的优势在于:解耦、异步、削峰,把相关性不

强的模块独立分开视为解耦,异步就是非必要逻辑异步方式处理,加快响应速度,削峰是避免短期高并发导致系统问题进行缓冲队列处理。消息队列的缺点在于:加强系统复杂性、系统可用性降低,使

用了消息队列系统出现问题排查的范围就变大、需要考虑消息队列导致的问题。

本文说明主流的消息队列,针对使用过的zeroMQ和rabbitMQ、Kakfa:

zeroMQ :C语言开发,号称最快的消息队列,本着命名zero的含义,中油中间架构使用简单,表面上是基于socket的封装套接字API,在多个节点应用场景下非常灵活、架构的可扩展性很强,

实现N到M的协同处理;

zmq的socket模式: req、rep、push、pull、pub、sub、router、dealer。

(1)req和rep:请求回应模型,req和rep都可以请求和回答,不同的只是req是先send再rec,rep是先rec再send。支持N个请求端一个接收端,也支持N个接收端一个请求端。N个接收端采

用rr负载均衡。 哪个是“一”端,哪个就bind端口,“N”端就只能connect,所以,req+rep无论谁bind端口,肯定要有一个是“一”。

(2) router和dealer:随时可以发送和接收的req和rep,看起来router+dealer跟 req+rep属于同类功能。因为router和dealer可以随时发送接收,所以它们可以用来做路由。一个router用来响

应N个req,然后它在响应处理的时候,再通过另一个socket把请求扔出去,接收者是另外的M个rep,这就做到N:M。

(3)pub和sub :订阅和推送,对应发布者和订阅者。

(4)push和pull:就是管道,一个只推数据,一个只拉数据。

rabbitMQ :使用erlang语言开发,高并发特点,基于AMQP(即Advanced Message Queuing Protocol)的开源高级消费队列,AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/

订阅)、可靠性、安全),企业级适应性和稳定性,并且有WEB管理界面方便用户查看和管理。以下是rabbitMQ的结构图:

(1)Producer:数据发送方,一般一个Message有两个部分:payload(有效载荷)和label(标签),payload是数据实际载体,label是exchange的名字或者一个tag,决定发给哪个Consumer;

(2)Exchange: 内部 消息交换器,exchange从生产者那收到消息后,一般会指定一个Routing Key,来指定这个消息的路由规则,当然Routing Key需要与Exchange Type及Binding key联合使用

才能最终生效,根据路由规则,匹配查询表中的routing key,分发消息到queue中;

(3)binding:即绑定,绑定(Binding)Exchange与Queue的同时,一般会指定一个Binding key,但不一定会生效,依赖于Exchange Type;

(4)Queue:即队列是rabbitmq内部对象,用于存储消息,一个message可以被同时拷贝到多个queue中,queue对load balance的处理是完美的。对于多个Consumer来说,RabbitMQ 使用循

环的方式(round-robin)的方式均衡的发送给不同的Consumer;

(5)Connection与Channel: Connection 就是一个TCP的连接,Producer和Consumer都是通过TCP连接到RabbitMQ Server, Channel 是为了节省开销建立在上述的TCP连接中的接口,大部

分的业务操作是在Channel这个接口中完成的,包括定义Queue、定义Exchange、绑定Queue与Exchange、发布消息等;

(6)Consumer:即数据的接收方,如果有多个消费者同时订阅同一个Queue中的消息,Queue中的消息会被平摊给多个消费者;

(7)Broker: 即RabbitMQ Server,其作用是维护一条从Producer到Consumer的路线,保证数据能够按照指定的方式进行传输;

(8)Virtual host:即虚拟主机,当多个不同的用户使用同一个RabbitMQ server提供的服务时,可以划分出多个vhost,每个用户在自己的vhost创建exchange/queue;

rabbitMQ消息转发中的路由转发是重点,生产者Producer在发送消息时,都需要指定一个RoutingKey和Exchange,Exchange收到消息后可以看到消息中指定的RoutingKey,再根据当前

Exchange的ExchangeType,按一定的规则将消息转发到相应的queue中去。三种Exchage type:

(1)Direct exchange :直接转发路由,原理是通过消息中的routing key,与binding 中的binding-key 进行比对,若二者匹配,则将消息发送到这个消息队列;

比如:消息生成者生成一个message(payload是1,routing key为苹果),两个binding(binding key分别为苹果、香蕉);exchange比对消息的routing key和binding key后,将消息发给了queue1,消息消费者1获得queue1的消息;

(2)Topic exchange: 通配路由,是direct exchange的通配符模式,

比如:消息生成者生成一个message(payload是1,routing key为quick.orange.rabbit),两个binding(binding key分别为*.orange. 、 *.*.rabbit);exchange比对消息的routing key和binding key

后,exchange将消息分发给两个queue,两个消费者获得queue的消息;

(3)Fanout exchange: 复制分发路由,原理是不需要routkey,当exchange收到消息后,将消息复制多份转发给与自己绑定的消息队列,

比如:消息生成者生成一个message(payload是1,routing key为苹果),两个binding(binding key分别为苹果、香蕉);exchange将消息分发给两个queue,两个消费者获得queue的消息;

rabbiMQ如何保证消息的可靠性?

(1)Message durability:消息持久化,非持久化消息保存在内存中,持久化消息写入内存同时也写入磁盘;

(2)Message acknowledgment:消息确认机制,可以要求消费者在消费完消息后发送一个回执给RabbitMQ,RabbitMQ收到消息回执(Message acknowledgment)后才将该消息从Queue中移

除。通过ACK。每个Message都要被acknowledged(确认,ACK)。

(3)生产者消息确认机制:AMQP事务机制、生产者消息确认机制(publisher confirm)。

最后, 对比一下zeroMQ、rabbitMQ、kafka主流的消息队列的性能情况:

对比方向 概要

吞吐量 万级 RabbitMQ 的吞吐量要比 十万级甚至是百万级Kafka 低一个数量级。ZeroMQ号称最快的消息队列系统,尤其针对大吞吐量的需求场景。

可用性 都可以实现高可用。RabbitMQ 都是基于主从架构实现高可用性。 kafka 也是分布式的,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用

时效性 RabbitMQ 基于erlang开发,所以并发能力很强,性能极其好,延时很低,达到微秒级。其他两个个都是 ms 级。

功能支持 Kafka 功能较为简单,主要支持简单的MQ功能,在大数据领域实时计算以及日志采集被大规模使用;ZeroMQ能够 实现RabbitMQ不擅长的高级/复杂 的队列

消息丢失 RabbitMQ有ack模型,也有事务模型,保证至少不会丢数据, Kafka 理论上不会丢失,但不排除批量情况下。

开发环境 RabbitMQ需要erlang支持、kafka基于zookeeper管理部署、zeroMQ程序编译调用即可

封装库 基于c++开发,使用RabbitMQ-C,cppKafka,而zeroMQ基于C语言开发,无需封装

rabbitmq基础配置中文说明文档

本文为官方文档翻译版本 rabbitmq3.7.5版本,原地址: 。以#开头的行为配置,key和等号以及value之间尽量保持有一个空格。以下的"默认"指的为在没有添加配置文件或者该key没有配置。

rabbitmq是使用基于tcp的amqp协议通信(如果需要ssl,可参考 这里 ),所以这里都是监听的tcp的端口。rabbitmq支持监听多端口,并支持指定网卡的ipv4和ipv6。格式为listeners.tcp.${name} = ${value},name可以是任意不重复的值,如:defaul、local、local_v6等。value的格式有:

(1)包括了(2)和(3),(2)包括了(4)和(6),(3)包括了(5)和(7)。下面对应的为其中情况的配置,按需求进行配置,不需要都配,大部分情况只配置(1)。默认的配置为listeners.tcp.default = 5672

例:

接受TCP侦听器连接的Erlang进程数。一旦打开了一个使用tcp连接的套接字,它就始终保持打开状态,直至任何一方关闭它或因为一个错误而终止。在建立一个连接时,一般为每一次请求产生一个新进程,num_acceptors就是控制产生新进程的个数。假设有一个监听进程,其任务是等待传入的tcp请求。只要一个请求到达,响应该连接请求的进程就变成了接收进程。默认的配置为num_acceptors.tcp = 10。

例:

AMQP 0-9-1握手(socket连接和TLS握手之后)的最大时间,以毫秒为单位。

默认的配置为handshake_timeout = 10000。

例:

设置为'true'以在接受一个连接时执行反DNS反查询。 在rabbitmqctl中和web管理中将显示主机名称而不是IP地址。默认的配置为reverse_dns_lookups = true。

例:

开启后的效果

仅允许通过本地(即localhost)连接到代理的用户列表。如果您希望允许guest用户远程连接,则需要将其更改为 loopback_users = none。

要将其他用户限制为仅限localhost的连接,请像这样执行(monitoring是用户的名称): loopback_users.monitoring = true。默认的配置为loopback_users.guest = true。推荐设置loopback_users.guest = false。

例:

关于ssl的配置,内容比较多,参考 官网 。默认不配置。

选择要使用的认证/授权后端。可以配置ldap相关的设置。具体可以参考 access-control 。internal为由rabbitmq内部处理,默认的配置为 auth_backends.1 = internal。

例:

RabbitMQ具有对各种SASL认证机制的可插拔支持。服务器内置了三种这样的机制:PLAIN,AMQPLAIN和RABBIT-CR-DEMO,以及EXTERNAL 可作为 插件使用 。您还可以通过 在插件中实现rabbit_auth_mechanism行为来实现自己的身份验证机制。有关常规插件开发的更多信息,请参阅 插件开发指南 。默认的配置为PLAIN和AMQPLAIN。

内置的机制:

例:

有关rabbitmq-auth-mechanism-ssl插件的配置,查看:

SSL handshake超时时间,毫秒为单位。默认的配置为ssl_handshake_timeout = 5000

例:

rabbitmq的用户的密码加密算法。修改该值只会影响新创建的用户,对应老用户需要重置密码进行更新。一般情况下不更改。默认的配置为password_hashing_module = rabbit_password_hashing_sha256。要使用SHA-512,请设置为rabbit_password_hashing_sha512。

例:

和web端的Import definitions、Export definitions有关。好像没啥用==。

默认的用户及其权限和vhost。如果一个connect没有配置以下的配置,则使用默认值进行连接。

默认用户的tag。默认的配置default_user_tags.administrator = true。一般不需要改。

例:

heartbeat通常用来检测通信的对端是否存活(未正常关闭socket连接而异常crash)。其基本原理是检测对应的socket连接上数据的收发是否正常,如果一段时间内没有收发数据,则向对端发送一个心跳检测包,如果一段时间内没有回应则认为心跳超时,即认为对端可能异常crash了。

rabbitmq也不例外,heatbeat在客户端和服务端之间用于检测对端是否正常,即客户端与服务端之间的tcp链接是否正常。

heartbeat检测时间间隔的设置:

这里要注意的是:如果时间间隔配置为0,则表示不启用heartbeat检测。

例:

设置amqp协议最大允许的字节数。默认的配置为frame_max = 131072(单位为字节,也就是128k),注意该值不要设置过大,如果一条消息比较大(如传输文件),可以通过Publish Confirm和Consumer Acknowledgement机制,如设置过大,那么broker内存会容易被占完。也不要设置过小,保持在128k-1m之间。 引用:使用RabbitMQ传输大文件,保证其完整性

例:

初始化时的最大字节,不知道哪里使用的。原文:Set the max frame size the server will accept before connection tuning occurs。

例:

设置每个连接的最大允许通道数量。 0表示“没有限制”。默认的配置为channel_max = 128。

例:

tcp连接相关的配置。尽量不要改。以下为默认的配置

例:

设置rabbitmq使用内存的阈值。有相对和绝对两种阈值。默认为vm_memory_high_watermark.relative = 0.4。

队列开始将消息导出到光盘来释放内存的高水位限制的值。

例如,当vm_memory_high_watermark被设置为0.4并且该值被设置为0.5时,

可以在节点使用总可用RAM的20%时开始分页。大于1.0的值可能很危险,应谨慎使用。

一种替代方法是使用持久队列并发布消息,作为持久性。 有了这个组合队列将消息更快地移动到磁盘。

另一种方法是配置队列来分页所有消息(都是持久和瞬态)到磁盘。

尽可能参阅 。

例:

内存使用情况报告策略。可以是以下之一,默认的配置为rss:

allocated:使用Erlang内存分配器统计信息

rss:使用操作系统RSS内存报告。这使用特定于操作系统的手段,并可能启动短暂的子进程。

legacy:使用legacy内存报告(运行时考虑使用多少内存)。这个策略相当不准确。

erlang:与legacy相同,为了向后兼容而保留

例:

根据 watermarks检查内存级别。没发现具体作用。

例:

可用内存总量,不使用特定于操作系统的方式从环境中推断内存。 只有当节点可用的实际最大RAM数量与节点将要推断的值不匹配时,才应使用这种方法。 该值可以设置为整数个字节,或者可以以信息单位(例如“8GB”)设置。 例如,当该值设置为4 GB时,该节点会认为它在具有4 GB RAM的计算机上运行。默认不设置该值。

例:

和vm_memory_high_watermark类似,disk_free_limit是控制硬盘的使用阈值。RabbitMQ正在存储数据的分区的磁盘可用空间限制。当可用磁盘空间低于此限制时,将触发流量控制。该值可以相对于RAM的总量或以字节或以信息单位表示的绝对值(例如"50MB"或"5GB"或"5KB")来设置,或者,我们可以设置相对于可用RAM总量的限制。低于1.0的值可能很危险,应谨慎使用。默认为disk_free_limit.absolute = 50MB。

例:

网络分裂。一种在系统的任何两个组之间的所有网络连接同时发生故障后所出现的情况。发生这种情况时,分裂的系统双方都会从对方一侧重新启动应用程序,进而导致重复服务或裂脑。由网络分裂造成的最为严重的问题是它会影响共享磁盘上的数据。默认为ignore模式。如何处理网络分裂?详细的文档可以参考 官网文档

可用的模式是:

在消息中镜像同步批量大小。增加这将加快同步,但批量总大小(以字节为单位)不得超过2 GiB。该设置可用于RabbitMQ 3.6.0或更高版本。默认的配置为 mirroring_sync_batch_size = 4096(4k)。

例:

集群相关的配置,为了形成一个集群,新的(“空白”)节点需要能够发现他们的同伴。这可以使用各种机制(后端)来完成。有些机制假定所有集群成员都提前知道(例如,在配置文件中列出),其他机制是动态的(节点可以动态增删)。

内置的发现机制如下:

cluster_formation.node_type:节点类型。默认为disc。

cluster_keepalive_interval:像集群里的其他子节点发送存活消息的间隔(毫秒)。默认为cluster_keepalive_interval = 10000

统计相关,与web管理插件显示有关。可配置的值如下:

例:

设置为true,以便使用HiPE预编译RabbitMQ的部分,这是Erlang的即时编译器。 这会以增加启动时间为代价来提高服务器吞吐量。

您可能会看到启动时延迟几分钟的成本提高20-50%。 这些数据非常依赖于工作负载和硬件。

HiPE支持可能不会编译到您的Erlang安装中。 如果不是,启用此选项只会导致显示一条警告消息,启动将按正常进行。 例如,Debian / Ubuntu用户需要安装erlang-base-hipe软件包。

HiPE在某些平台上完全不可用,特别包括Windows。

HiPE在17.5之前的Erlang / OTP版本中存在已知问题。 HiPE强烈建议使用最新的Erlang / OTP版本。默认的配置为hipe_compile = false。

等待集群中的Mnesia tables变得可用时使用的超时。默认的配置mnesia_table_loading_retry_timeout = 30000。

在等待集群中的Mnesia tables可用时,需要重试的次数。默认的配置mnesia_table_loading_retry_limit = 10。

在消息的字节数中,消息将被直接嵌入到队列索引中。详情请看 persister tuning 。默认的配置queue_index_embed_msgs_below = 4096。

是否启用后台定期强制GC为“等待”状态运行节点上的所有Erlang进程。

禁用后台GC可以减少客户端操作的延迟,保持启用状态可以减少二进制堆的RAM使用量(请参阅 )。

在尝试此选项之前,请查看内存( )。

默认的配置background_gc_enabled = false,当配置为true时,可以设置gc的间隔,默认的配置为background_gc_target_interval = 60000(毫秒)。

设置是否启用代理,启用后不能直连到broker。默认的配置proxy_protocol = false。

未知

有关web管理后台的配置。

查看 。

查看

查看 。

怎样启用rabbitmqweb管理插件

1、远程Web管理有两种意思:

第一种是路由器自带的远程Web管理功能

第二种是WindowsSBS中带有的Web管理功能

不知道你的问题是哪一种,所以将这两种问题的解决方法都提供给你

2、开启路由器自带远程Web管理功能

路由器的远程Web管理和路由器管理页面是两回事,远程Web管理功能需要单独开启,不同的路由器开启方式可能有差别,以TP-Link为例

在管理页面中设置Web管理端口和IP地址,并且选择启用才可以!

如果你的问题是进不了路由器管理页面,那么请复位路由器试试

3、开启WindowsSBS中的远程Web管理功能

a.打开 Windows SBS 控制台。

b.在导航栏中,单击“共享文件夹和网站”。

c.单击“网站”选项卡。

d.右键单击“远程 Web 访问”,请单击“启用此站点”即可!

Ubuntu16.04搭建rabbitmq集群

1.1、什么是RabbitMQ?

RabbitMQ 是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成,因此也是继承了这些优点。

1.2、什么是AMQP?

AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。它从生产者接收消息并递送给消费者,在这个过程中,根据规则进行路由,缓存与持久化。

AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。

RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如: Python 、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

1.3、RabbitMQ的基础概念

1.4、RabbitMQ的特性

2.1、环境:两台Ubuntu16.04主机

10.27.0.53 rabbitmq-1

10.27.0.130 rabbitmq-2

必须保证各个主机名之间可以ping通

2.2、安装Erlang

2.3、安装rabbitmq

2.4、安装完成后,验证一下服务是否正常

搭建好的rabbitmq默认是没有配置文件的,需要我们来手动添加

Rabbitmq的一些运行脚本存放在 /usr/sbin 下面

2.5、开启web管理插件

2.5.1、创建一个用户nova,并设置密码为123456

2.5.2、查看现有用户表

这个时候nova用户是不能访问web管理插件的,需要配置用户角色,用户角色可分为五类,超级管理员, 监控者, 策略制定者, 普通管理者以及其他。

可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。

可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)

可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息。

仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。

无法登陆管理控制台,通常就是普通的生产者和消费者。

将nova添加到administrator用户组

此时的nova用户只能通过本地来登录其他的IP无法直接使用这个账号。所以需要对他进行授权,使用户nova /(可以访问虚拟主机) 中所有资源的配置、写、读权限以便管理其中的资源

查看用户授权

2.5.3、开启web管理插件并重启rabbitmq服务

以下为关闭插件命令

通过浏览器访问 [ 密码123456就可以看到后台了

3.1、从管理界面可以看到,此时只有一个节点rabbitmq-1,我们需要把rabbitmq-2加进来,rabbitmq-2按照步骤2进行一系列安装就可以。此处不再细说。

3.2、添加节点

两台主机上安装的 RabbitMQ 都保证都可以正常启动,才可以进行以下操作

3.2.1、设置不同节点间统一认证的Erlang Cookie

这里将 rabbitmq-1 的该文件复制到 rabbitmq-2由于这个文件权限是 400为方便传输,先修改权限,非必须操作,所以需要先修改rabbitmq-2中的该文件权限为 777

然后将rabbitmq-1中的该文件拷贝的rabbitmq-2中

最后将权限和所属用户/组修改回来

此时rabbitmq-2节点需要重启一下服务

注意事项

cookie在所有节点上必须完全一样,同步时一定要注意。

erlang是通过主机名来连接服务,必须保证各个主机名之间可以ping通。可以通过编辑/etc/hosts来手工添加主机名和IP对应关系。如果主机名ping不通,rabbitmq服务启动会失败。

3.2.2、通过rabbitmqctl cluster_status命令,可以查看和个节点的状态,节点的名称是rabbit@shorthostname,

rabbitmq-1

rabbitmq-2

3.2.3

将两个节点组成集群

因为rabbitmq-server启动时,会一起启动节点和应用,它预先设置RabbitMQ应用为standalone模式。要将一个节点加入到现有的集群中,你需要停止这个应用并将节点设置为原始状态,然后就为加入集群准备好了。使用rabbitmqctl stop_app仅仅关闭应用。

将2加入1中

启动节点2的应用

如果要使用内存节点,则可以使用以下命令:其中–ram指的是作为内存节点,要是想做为磁盘节点的话,就不用加–ram这个参数了

集群配置好后,可以在 RabbitMQ 任意节点上执行 rabbitmqctl cluster_status 来查看是否集群配置成功。

Rabbitmq-1

Rabbitmq-2

同时在Web管理工具中也可以看到效果

上面配置RabbitMQ默认集群模式,但并不保证队列的高可用性,尽管交换机、绑定这些可以复制到集群里的任何一个节点,但是队列内容不会复制,虽然该模式解决一部分节点压力,但队列节点宕机直接导致该队列无法使用,只能等待重启,所以要想在队列节点宕机或故障也能正常使用,就要复制队列内容到集群里的每个节点,需要创建镜像队列。

镜像队列概念:镜像队列可以同步queue和message,当主queue挂掉,从queue中会有一个变为主queue来接替工作。镜像队列是基于普通的集群模式的,所以你还是得先配置普通集群,然后才能设置镜像队列。镜像队列设置后,会分一个主节点和多个从节点,如果主节点宕机,从节点会有一个选为主节点,原先的主节点起来后会变为从节点。queue和message虽然会存在所有镜像队列中,但客户端读取时不论物理面连接的主节点还是从节点,都是从主节点读取数据,然后主节点再将queue和message的状态同步给从节点,因此多个客户端连接不同的镜像队列不会产生同一message被多次接受的情况。

设置镜像队列策略

在普通集群的中任意节点启用策略,策略会自动同步到集群节点

命令格式

在任意一个节点上执行

集群重启

集群重启时,最后一个挂掉的节点应该第一个重启,如果因特殊原因(比如同时断电),而不知道哪个节点最后一个挂掉。可用以下方法重启:

先在一个节点上执行

在其他节点上执行

查看cluster状态是否正常(要在所有节点上查询)。

添加用户

处于安全的考虑,guest这个默认的用户只能通过 来登录,其他的IP无法直接使用这个账号。所以我们需要添加一个其他用户。

命令格式

删除用户

命令格式

修改密码

命令格式

用户授权

命令格式

该命令使用户nova /(可以访问虚拟主机) 中所有资源的配置、写、读权限以便管理其中的资源

查看用户授权

命令格式

查看当前用户列表

可以看到添加用户成功了,但不是administrator角色

添加角色

这里我们也将nova用户设置为administrator角色

命令格式

再次查看权限

清除权限信息

命令格式

下一篇为测试文章

rabbitmq的特点

可靠性 ∶RabbitMQ使用一些机制来保证可靠性,如持久化、传输确认及发布确认等。

灵活的路由 ∶在消息进入队列之前,通过交换器来路由消息。对于典型的路由功能,RabbitMQ已经提供了一些内置的交换器来实现。针对更复杂的路由功能,可以将多个交换器绑定在一起,也可以通过插件机制来实现自己的交换器。

扩展性 ∶多个RabbitMQ节点可以组成一个集群,也可以根据实际业务情况动态地扩展集群中节点。

高可用性 ∶ 队列可以在集群中的机器上设置镜像,使得在部分节点出现问题的情况下队列仍然可用。

多种协议 ∶ RabbitMQ除了原生支持AMQP协议,还支持STOMP、MQTT等多种消息中间件协议

多语言客户端 ∶ RabbitMQ几乎支持所有常用语言,比如 Java、Python、Ruby、PHP、C#、JavaScript 等。

管理界面 ∶RabbitMQ 提供了一个易用的用户界面,使得用户可以监控和管理消息、集群中的节点等。

插件机制 ∶RabiMQ提供了许多插件,以实现从多方面进行扩展,当然也可以编写自己的插件。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, website.service08@gmail.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息