Centos操作系统(五)-Rabbitmq安装与使用

Rabbitmq安装与使用

一、Erlang安装

[root@localhost ~]# yum install erlang
安装过程中会有提示,一路输入“y”即可。
测试是否安装成功:
[root@localhost ~]# erl
Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V5.10.4  (abort with ^G)
1>
请使用以下方式安装:
[root@localhost ~]# wget http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm
[root@localhost ~]# rpm -ivh erlang-19.0.4-1.el7.centos.x86_64.rpm

二、Rabbitmq安装

1、下载rpm:
[root@localhost ~]# wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.5/rabbitmq-server-3.7.5-1.el6.noarch.rpm
2、安装:
[root@localhost ~]# yum install  rabbitmq-server-3.7.5-1.el6.noarch.rpm
已加载插件:fastestmirror, langpacks
正在检查 rabbitmq-server-3.7.5-1.el6.noarch.rpm: rabbitmq-server-3.7.5-1.el6.noarch
rabbitmq-server-3.7.5-1.el6.noarch.rpm 将被安装
正在解决依赖关系
--> 正在检查事务
---> 软件包 rabbitmq-server.noarch.0.3.7.5-1.el6 将被 安装
--> 正在处理依赖关系 erlang >= 19.3,它被软件包 rabbitmq-server-3.7.5-1.el6.noarch 需要
Loading mirror speeds from cached hostfile

三、Rabbitmq启动

1.启动Rabbitmq
[root@localhost ~]# service rabbitmq-server start
Starting rabbitmq-server (via systemctl):
                                                           [  确定  ]
2、配置用户及WEBUI插件
启用插件:
[root@localhost ~]# rabbitmq-plugins enable rabbitmq_management
2、配置管理员账号:
添加用户:
[root@localhost ~]# rabbitmqctl add_user admin admin
Adding user "admin" ...
设置用户tag:
[root@localhost ~]# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...
赋予用户默认vhost的全部操作权限:
[root@localhost ~]# rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
Setting permissions for user "admin" in vhost "/" ...

3.访问Rabbitmq
http://192.168.1.104:15672/
默认账号密码:
guest guest 只能在本地访问
使用新添用户:admin admin

4、开机自动启动
[root@localhost ~]# chkconfig rabbitmq-server on

四、Rabbitmq常用命令

1、可以查看服务状态:
[root@localhost ~]# rabbitmqctl status
2、重启服务:
[root@localhost ~]# service rabbitmq-server restart
Restarting rabbitmq-server (via systemctl):
                                                          [  确定  ]
3、关闭服务
[root@localhost ~]# service rabbitmq-server stop
4、重置服务
[root@localhost ~]# service rabbitmq-server reset
force_reset
强制RabbitMQ node还原到最初状态.
不同于reset , force_reset 命令会无条件地重设node,不论当前管理数据库的状态和集群配置是什么。它只能在数据库或集群配置已损坏的情况下才可使用。
执行reset和force_reset之前,必须停止RabbitMQ application 
将RabbitMQ node还原到最初状态.包括从所在群集中删除此node,从管理数据库中删除所有配置数据,如已配置的用户和虚拟主机,以及删除所有持久化消息.

五、RabbitMQ用户角色及权限控制

1.RabbitMQ的用户角色分类:
none、management、policymaker、monitoring、administrator
2.RabbitMQ各类角色描述:
none
不能访问 management plugin
management
用户可以通过AMQP做的任何事外加:
列出自己可以通过AMQP登入的virtual hosts  
查看自己的virtual hosts中的queues, exchanges 和 bindings
查看和关闭自己的channels 和 connections
查看有关自己的virtual hosts的“全局”的统计信息,包含其他用户在这些virtual hosts中的活动。
policymaker 
management可以做的任何事外加:
查看、创建和删除自己的virtual hosts所属的policies和parameters
monitoring  
management可以做的任何事外加:
列出所有virtual hosts,包括他们不能登录的virtual hosts
查看其他用户的connections和channels
查看节点级别的数据如clustering和memory使用情况
查看真正的关于所有virtual hosts的全局的统计信息
administrator   
policymaker和monitoring可以做的任何事外加:
创建和删除virtual hosts
查看、创建和删除users
查看创建和删除permissions
关闭其他用户的connections
3.创建用户并设置角色
可以创建管理员用户,负责整个MQ的运维
可以创建RabbitMQ监控用户,负责整个MQ的监控
可以创建某个项目的专用用户,只能访问项目自己的virtual hosts
4.RabbitMQ权限控制

六、常见问题

1、 erlang >= 19.3 被 rabbitmq-server-3.7.5-1.el6.noarch 需要
[root@localhost ~]# wget http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm
2、卸载erlang
[root@localhost ~]# yum list | grep erlang
使用此命令查询出erlang在Linux系统中安装包的名字 
[root@localhost ~]# yum remove erlang.x86_64
3、卸载rabbitmq
//查询所有的包
[root@localhost ~]# rpm -qa | grep rabbitmq
卸载
[root@localhost ~]# rpm -e rabbitmq-server
<think>嗯,用户之前问过如何优化频繁调用的身份验证API,特别是当API连接失败时如何减少延迟。我给出了包括缓存、熔断器Resilience4j等方案。现在用户想了解Resilience4j的具体情况,可能需要深入了解这个熔断器如何工作,以及如何集成到他们的系统中。 首先,用户可能是开发人员,负责系统的架构或维护,他们需要具体的解决方案来解决API的可用性问题。用户可能对熔断器模式有一定了解,但需要知道Resilience4j与其他工具(如Hystrix)的区别,以及如何具体实施。 用户的需求不仅仅是理论,而是实际的实现步骤、配置方法和最佳实践。他们可能已经在使用Spring Boot或其他Java框架,所以需要知道如何集成Resilience4j,比如依赖添加、注解使用等。此外,用户可能关心监控和调优熔断器,确保系统在高负载或故障时仍能稳定运行。 在回答时,我需要详细说明Resilience4j的核心功能,比如熔断器的工作原理、配置参数,以及如何与现有系统结合。还要提到与其他组件的协同,比如结合Retry模块或Rate Limiter,增强系统的弹性。另外,用户可能对熔断器的状态转换和监控感兴趣,需要解释半开状态的作用和恢复机制。 同时,用户可能想知道实际代码示例,这样他们可以快速上手。我需要提供简单的配置代码,比如使用注解或Builder模式,并解释每个参数的意义。此外,最佳实践部分可以帮助他们避免常见错误,比如合理设置阈值和测试策略。 最后,用户可能希望了解Resilience4j的优势,比如轻量级、响应式兼容性,以及与Spring生态的集成,这能帮助他们做技术选型。需要强调其模块化设计,适合微服务环境,这样用户可以根据需要选择功能模块,减少不必要的依赖。</think>以下是关于熔断器 **Resilience4j** 的详细介绍,涵盖其核心功能、使用场景及最佳实践: --- ### **1. Resilience4j 是什么?** - **定位**:一款轻量级的 **容错库**,专为Java 8+设计,支持函数式编程,适用于微服务架构。 - **特点**: - 模块化设计(熔断器、限流、重试、隔板等可单独使用)。 - 与Spring Boot深度集成(通过注解或代码配置)。 - 相比Hystrix,资源占用更低,依赖更少(无外部服务依赖)。 --- ### **2. 核心功能:熔断器(Circuit Breaker)** - **作用**:在依赖服务(如身份验证API)持续故障时,快速失败并降级,避免系统崩溃。 - **状态机**: - **CLOSED**:正常状态,请求放行。 - **OPEN**:熔断状态,直接拒绝请求,不调用下游服务。 - **HALF_OPEN**:尝试部分请求,探测服务是否恢复。 - **触发熔断的条件**: - **失败率阈值**:例如,50%的请求失败时触发。 - **慢调用率**:例如,超过1秒的请求占比超过阈值。 - **请求数量基数**:基于最小请求数(避免低流量误判)。 --- ### **3. 关键配置参数** ```java CircuitBreakerConfig config = CircuitBreakerConfig.custom() .failureRateThreshold(50) // 失败率阈值(百分比) .slowCallRateThreshold(30) // 慢调用率阈值 .slowCallDurationThreshold(Duration.ofSeconds(2)) // 慢调用判定时间 .minimumNumberOfCalls(10) // 触发熔断的最小请求基数 .slidingWindowType(SlidingWindowType.COUNT_BASED) // 统计窗口类型(COUNT/TIME) .slidingWindowSize(100) // 统计窗口大小(请求次数或秒数) .waitDurationInOpenState(Duration.ofSeconds(60)) // OPEN状态转HALF_OPEN的等待时间 .permittedNumberOfCallsInHalfOpenState(5) // HALF_OPEN状态允许的试探请求数 .build(); ``` --- ### **4. 与Spring Boot集成示例** #### **步骤1:添加依赖** ```xml <dependency> <groupId>io.github.resilience4j</groupId> <artifactId>resilience4j-spring-boot2</artifactId> <version>2.1.0</version> </dependency> ``` #### **步骤2:通过注解使用熔断器** ```java @Service public class AuthService { @CircuitBreaker(name = "authApi", fallbackMethod = "fallbackAuth") public UserInfo authenticate(String token) { // 调用外部身份验证API return remoteAuthClient.getUserInfo(token); } // 降级方法(参数需与原方法一致,最后加异常参数) private UserInfo fallbackAuth(String token, Exception ex) { return localDbService.getUserByToken(token); // 降级到本地数据库 } } ``` #### **步骤3:配置文件(application.yml)** ```yaml resilience4j.circuitbreaker: instances: authApi: registerHealthIndicator: true failureRateThreshold: 50 minimumNumberOfCalls: 20 slidingWindowSize: 50 waitDurationInOpenState: 10s ``` --- ### **5. 高级特性** - **指标监控**: - 集成Micrometer导出指标到Prometheus/Grafana。 - 监控熔断器状态变化、请求成功/失败率等。 - **组合弹性模式**: - **熔断器 + 重试**:在CLOSED状态自动重试失败请求。 - **熔断器 + 限流器**:防止恢复阶段流量洪峰。 - **事件监听**: ```java circuitBreaker.getEventPublisher() .onStateTransition(event -> log.info("熔断器状态变化: {} → {}", event.getStateTransition())); ``` --- ### **6. 最佳实践** 1. **合理设置阈值**: - 根据业务容忍度调整`failureRateThreshold`(例如金融系统用30%,社交应用用60%)。 2. **熔断恢复策略**: - 在HALF_OPEN状态逐步增加探测流量,避免瞬间压垮恢复中的服务。 3. **结合降级数据源**: - 熔断期间返回本地缓存或默认值(如“系统维护中”)。 4. **测试熔断逻辑**: - 使用模拟故障工具(如Chaos Monkey)验证熔断是否触发。 --- ### **7. 与其他熔断器对比** | | **Resilience4j** | **Hystrix** | |---------------|------------------------|----------------------| | **维护状态** | 活跃维护 | 停止维护(官方推荐迁移) | | **资源消耗** | 低(无额外线程池) | 高(依赖线程隔离) | | **编程模型** | 函数式/注解 | 注解/命令模式 | | **扩展性** | 模块化设计,灵活组合 | 功能耦合度高 | --- ### **适用场景** - 高频调用的外部服务(如身份验证、支付接口)。 - 微服务架构中的跨服务依赖。 - 需要快速失败并优雅降级的核心链路。 --- 通过Resilience4j熔断器,可显著提升系统的容错能力和可用性,建议结合具体业务场景调整参数并配合监控告警使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值