RabbitMQ 是一个开源的消息队列系统(也称为消息代理或消息中间件),它实现了高级消息队列协议(AMQP)和其他消息协议。它用于在分布式系统中存储和转发消息,支持多种编程语言,并且被广泛用于处理异步消息传递、应用程序解耦、数据缓冲和流量控制等场景。

RabbitMQ的人生简介_VMware

RabbitMQ 的“前世”可以追溯到 2007 年,当时它是作为一个轻量级、可扩展的消息队列解决方案被开发出来的。它的“今生”则是一个成熟、可靠的消息中间件,被广泛用于各种应用场景,从微服务架构到物联网(IoT)和大数据处理。RabbitMQ 的成功在很大程度上归功于其背后的开源社区、持续的创新以及它在企业中的应用普及。

RabbitMQ 的历史和发展可以概括为以下几个阶段:

早期历史
  • 2007年:诞生 RabbitMQ 最初是由 Rabbit Technologies Ltd. 开发的,该公司是由 LShift 和 Cohesive Financial Technologies 这两家公司共同创立的。RabbitMQ 的第一个版本是基于 Erlang 编程语言编写的,它使用了 Erlang OTP 平台提供的高并发和分布式特性。
  • 2007年:开源 RabbitMQ 在发布之初就是开源软件,并在随后不久将其源代码托管到了 GitHub 上。这使得 RabbitMQ 能够迅速吸引开发者和企业的关注,并开始构建一个活跃的社区。
发展与成熟
  • 2009年:SpringSource 在 2009 年,SpringSource(后被 VMware 收购)收购了 Rabbit Technologies Ltd.,这进一步推动了 RabbitMQ 的发展。Spring 框架与 RabbitMQ 的集成变得更加紧密,使得 RabbitMQ 在 Java 社区中获得了更广泛的认可。
  • 2010年:Pivotal 随着 SpringSource 成为 Pivotal(由 EMC、VMware 和 GE 联合成立的公司)的一部分,RabbitMQ 继续得到支持和发展。Pivotal 进一步推广了 RabbitMQ,并将其作为其 PaaS 产品 Pivotal Cloud Foundry 的一部分。
现代发展
  • 2013年:独立公司 RabbitMQ 的主要开发者于 2013 年成立了 RabbitMQ Inc.,这是一家独立的公司,专注于 RabbitMQ 的商业支持和服务。
  • 2019年:VMware 在 2019 年,VMware 收购了 Pivotal,RabbitMQ 因此成为了 VMware 的一部分。VMware 继续支持 RabbitMQ 的开源项目,并提供商业支持。
当前状况
  • 持续更新与维护 RabbitMQ 仍然是一个活跃的开源项目,定期发布新版本,添加新功能和改进。它已经成为消息队列领域的事实标准之一,被许多企业用于构建可靠、可扩展的分布式系统。
  • 社区与生态系统 RabbitMQ 拥有一个庞大的社区,提供大量的插件、客户端库和集成。它的生态系统包括多种编程语言的客户端库,以及与其他技术栈的集成。

RabbitMQ的人生简介_消息队列_02


以下是如何使用 RabbitMQ 的基本步骤:

1. 安装 RabbitMQ

首先,你需要在你的服务器上安装 RabbitMQ。你可以从 RabbitMQ 的官方网站下载相应的安装包,或者使用包管理工具进行安装。

  • 对于 Ubuntu/Debian 系统,可以使用以下命令:
sudo apt-get install rabbitmq-server
  • 1.
  • 对于 CentOS/RHEL 系统,可以使用以下命令:
sudo yum install rabbitmq-server
  • 1.

安装完成后,RabbitMQ 服务通常会自动启动。

2. 启动和停止 RabbitMQ 服务
  • 启动 RabbitMQ 服务:
sudo systemctl start rabbitmq-server
  • 1.
  • 停止 RabbitMQ 服务:
sudo systemctl stop rabbitmq-server
  • 1.
  • 重启 RabbitMQ 服务:
sudo systemctl restart rabbitmq-server
  • 1.
3. 配置 RabbitMQ

RabbitMQ 提供了一个管理界面,可以通过以下命令启用:

sudo rabbitmq-plugins enable rabbitmq_management
  • 1.

然后,你可以通过浏览器访问 http://<your-server-ip>:15672 来访问管理界面,默认的用户名和密码都是 guest

4. 创建用户和权限

为了安全起见,你可以创建一个新的用户并为它分配权限。

  • 创建用户:
sudo rabbitmqctl add_user <username> <password>
  • 1.
  • 分配权限:
sudo rabbitmqctl set_permissions -p / <username> ".*" ".*" ".*"
  • 1.
  • 设置用户角色:
sudo rabbitmqctl set_user_tags <username> administrator
  • 1.
5. 使用 RabbitMQ
生产者(发送消息)

以下是一个简单的 Python 生产者示例,使用 pika 库:

import pika
# 连接到 RabbitMQ 服务器
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# 声明一个队列
channel.queue_declare(queue='hello')
# 发送消息
channel.basic_publish(exchange='', routing_key='hello', body='Hello World!')
print(" [x] Sent 'Hello World!'")
# 关闭连接
connection.close()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
消费者(接收消息)

以下是一个简单的 Python 消费者示例:

import pika
# 连接到 RabbitMQ 服务器
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
# 声明一个队列
channel.queue_declare(queue='hello')
# 定义一个回调函数来处理消息
def callback(ch, method, properties, body):
    print(" [x] Received %r" % body)
# 告诉 RabbitMQ 使用这个回调函数来接收消息
channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)
# 开始接收消息
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.

确保你已经安装了 pika 库,可以使用以下命令安装:

pip install pika
  • 1.

RabbitMQ的人生简介_服务器_03

注意事项
  • 在生产环境中,应该配置 RabbitMQ 以使用更安全的连接(例如 SSL/TLS)。
  • 需要合理配置消息队列和交换机,以适应你的应用场景。
  • 应该考虑消息的持久化,以防服务器故障导致数据丢失。 以上是 RabbitMQ 的基本使用方法,具体的使用会根据应用场景和需求有所不同。