linux centos rabbitmq3.7.5 一键安装部署
- 一、基础理论
- 二、kafka和rocketmq、rabbitmq的区别
- 三、下载所需安装包
- 四、一键安装
一、基础理论
RabbitMQ是一个实现了高级消息队列协议(AMQP)的开源消息代理软件,其作用主要体现在以下几个方面:
1、消息传递:
RabbitMQ允许应用程序通过消息传递进行通信,这使得不同的应用程序可以在不同的语言和操作系统之间进行通信。
它支持多种编程语言,如Python、Java、Ruby、PHP、C#、JavaScript、Go、Elixir、Objective-C和Swift等,使得不同技术栈之间的通信变得简单高效。
2、消息路由:
RabbitMQ能够将消息从一个应用程序路由到另一个应用程序,这可以通过将消息发送到交换机(Exchange)和队列(Queue)来完成。
它支持多种路由模式,如发布/订阅模式(Publish/Subscribe)、路由模式(Routing)和主题模式(Topics),以满足不同场景下的消息路由需求。
3、消息队列:
RabbitMQ可以保存消息,直到消费者准备好接收它们。这使得应用程序能够以异步方式处理消息,提高了系统的响应速度和吞吐量。
通过消息队列,应用程序可以解耦不同的业务逻辑,降低系统之间的耦合度,提高系统的可扩展性和可维护性。
4、消息持久化:
RabbitMQ支持从内存持久化消息到硬盘,再从硬盘加载到内存,确保消息的可靠性和持久性。
这使得即使在系统崩溃或重启的情况下,也能保证消息不会丢失,从而保证了系统的稳定性和可靠性。
5、集群和故障转移:
RabbitMQ可以构建在开放电信平台框架上的集群和故障转移机制,提高了系统的可用性和容错能力。
通过集群,RabbitMQ可以实现消息的负载均衡和高可用性,确保系统能够处理大量的并发请求。
6、集成与扩展:
RabbitMQ可以与多种框架和工具进行集成,如Spring框架、Docker容器等,使得在现有系统中集成RabbitMQ变得更加容易。
同时,RabbitMQ也提供了丰富的插件和扩展机制,可以根据实际需求进行定制和扩展。
7、应用场景:
RabbitMQ在多个场景下都有广泛的应用,如日志收集、消息通讯、解耦系统组件、异步任务处理等。
在微服务或分布式系统架构中,RabbitMQ提供了一种解耦的方式来确保消息的可靠传输,提高了系统的可维护性和可扩展性。
综上所述,RabbitMQ作为一个开源的消息代理软件,通过其强大的消息传递、路由、队列和持久化等功能,为应用程序之间的通信提供了可靠、高效和可扩展的解决方案。
二、kafka和rocketmq、rabbitmq的区别
Kafka、RocketMQ和RabbitMQ都是流行的消息队列系统,它们在功能、性能、使用场景等方面存在一定的差异。以下是关于它们之间区别的详细比较:
1、语言与开发
Kafka:采用Scala语言开发,由Linkedin公司开发并贡献给Apache基金会,是一个顶级的开源项目。
RocketMQ:采用Java语言开发。
RabbitMQ:采用Erlang语言开发,并提供了多种语言的客户端支持。
2、吞吐量与性能
Kafka:设计目标是以时间复杂度为O(1)的方式提供消息持久化能力,即使在TB级数据上也能保持常数时间的访问性能。支持批量处理和磁盘顺序读写,使得其吞吐量极高。
RocketMQ:也具有较高的吞吐量,但在某些场景下可能稍逊于Kafka。
RabbitMQ:吞吐量相对较低,但在一些对延迟要求极高的场景下表现良好。
3、可靠性与持久化
Kafka:消息持久化到磁盘,并通过replication防止数据丢失。Kafka支持同步和异步的消息复制策略。
RocketMQ:支持消息的高可靠性,通过同步双写技术可以完全避免单点故障。
RabbitMQ:通过确认机制、支持事务、委托和备份交换器等机制保证消息的可靠性。
4、使用场景
Kafka:主要应用于大数据实时处理领域,如基于Hadoop的批处理系统、低延迟的实时系统、Spark/Flink流式处理引擎等。
RocketMQ:在互联网金融、电商、物流等领域有广泛应用,支持事务消息和回溯消费等特性。
RabbitMQ:适用于实时性要求较高的场景,如在线游戏、Web应用等。RabbitMQ还支持多种消息路由和过滤机制。
5、系统架构与扩展性
Kafka:基于Zookeeper协调的分布式消息中间件系统,支持分布式消费和扩展。
RocketMQ:采用NameServer和Broker的架构,NameServer负责路由信息的维护,Broker负责消息的存储和转发。
RabbitMQ:使用Erlang编写,具有轻量级和易于扩展的特点。它支持多种集群模式,如镜像队列等。
6、总结
Kafka、RocketMQ和RabbitMQ各有其优势和适用场景。Kafka在大数据实时处理领域表现出色,RocketMQ在互联网金融等领域有广泛应用,而RabbitMQ则适用于实时性要求较高的场景。在选择消息队列系统时,需要根据具体的业务需求和场景进行权衡和选择。
三、下载所需安装包
1、安装Erlang
Erlang RPM包下载地址:https://github.com/rabbitmq/erlang-rpm/releases/tag/v20.3.6
2、安装rabbitmq
版本地址https://github.com/rabbitmq/rabbitmq-server/releases
rpm下载地址
https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.5
3、socat下载
https://rpmfind.net/linux/RPM/centos/7.9.2009/x86_64/Packages/socat-1.7.3.2-2.el7.x86_64.html
4、密钥文件
cat rabbitmq-release-signing-key.asc
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=tsX2
-----END PGP PUBLIC KEY BLOCK-----
5、安装包文件位置
四、一键安装
1、安装脚本位置
cat install-rabbitmq.sh
#!/bin/bash
script_dir=$(cd $(dirname $0);pwd)
log_info(){
content="[ INFO ] $(date "+%F %H:%M:%S") $1"
echo -e "\033[32m" ${content} "\033[0m" >>$script_dir/install.log
echo -e "\033[32m" ${content} "\033[0m"
}
log_error(){
if [ "$?" != 0 ];then
content="[ ERROR ] $(date "+%F %H:%M:%S") $1"
echo -e "\033[31m" ${content} Error"\033[0m"\" >>$script_dir/install.log
echo -e "\033[31m" ${content} Error"\033[0m"\"
exit -1
fi
}
admin_passwd="admin@LDBa1"
bpm_passwd="ldb@LDB1"
cd $script_dir/../package/rabbitmq
log_info "install rabbitmq socat erlang rpm.."
sudo rpm -ivh socat-1.7.3.2-2.el7.x86_64.rpm
sudo rpm -ivh erlang-20.3.6-1.el7.centos.x86_64.rpm
#log_error 'rpm package install failed'
sudo rpm --import rabbitmq-release-signing-key.asc
log_info "install rabbitmq-server"
sudo rpm -ivh rabbitmq-server-3.7.5-1.el7.noarch.rpm
#log_error "rabbitmq-server install failed"
log_info "start rabbitmq-server."
sudo systemctl enable rabbitmq-server
sudo systemctl start rabbitmq-server
log_error "start rabbitmq-server failed"
log_info "start rabbitmq management."
sudo rabbitmq-plugins enable rabbitmq_management
log_info "add rabbimt admin user"
sudo rabbitmqctl add_user admin $admin_passwd
sudo rabbitmqctl set_user_tags admin administrator
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
log_info "add rabbimt bpm user"
sudo rabbitmqctl add_user bpm $bpm_passwd
sudo rabbitmqctl set_permissions -p / ldb ".*" ".*" ".*"
sudo systemctl status rabbitmq-server
log_info "install rabbitmq done."
7、启动完成样例