温馨提示×

RabbitMQ消息路由在Linux上如何配置

小樊
82
2025-02-17 22:44:35
栏目: 智能运维
Linux服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在Linux上配置RabbitMQ消息路由主要涉及安装RabbitMQ、配置交换器、创建队列、绑定队列到交换器以及发送和接收消息等步骤。以下是详细的配置流程:

安装RabbitMQ

  1. 安装Erlang

    • RabbitMQ依赖于Erlang,因此需要先安装Erlang。可以通过包管理器安装,例如在CentOS上使用yum install erlang
  2. 下载并安装RabbitMQ

    • 从RabbitMQ官网下载适合Linux版本的RabbitMQ安装包。
    • 使用包管理器安装RabbitMQ,例如在CentOS上使用yum install rabbitmq-server
  3. 配置RabbitMQ

    • 创建RabbitMQ的配置文件/etc/rabbitmq/rabbitmq.config,并设置相关配置,如监听地址、端口等。
    • 设置RabbitMQ的环境变量,如RABBITMQ_MNESIA_BASERABBITMQ_LOG_BASE
  4. 启用管理插件(可选):

    • 使用rabbitmq-plugins enable rabbitmq_management命令启用管理插件,以便通过Web界面管理RabbitMQ。

配置消息路由

RabbitMQ支持多种消息路由模式,包括直连交换器(Direct)、扇形交换器(Fanout)、主题交换器(Topic)和标题交换器(Headers)。以下是每种模式的简要说明和配置示例:

直连交换器(Direct)

  • 原理:根据消息的Routing Key将消息发送到与之匹配的队列中。
  • 配置示例
    [
      {rabbit, [
        {direct_listeners, [
          {5672, ["localhost"]}
        ]}
      ]}
    ].
    

扇形交换器(Fanout)

  • 原理:将消息广播到所有与其绑定的队列上。
  • 配置示例
    [
      {rabbit, [
        {fanout_listeners, [
          {5672, ["localhost"]}
        ]}
      ]}
    ].
    

主题交换器(Topic)

  • 原理:根据消息的Routing Key和模式匹配将消息发送到与之匹配的队列中。
  • 配置示例
    [
      {rabbit, [
        {topic_listeners, [
          {5672, ["localhost"]}
        ]}
      ]}
    ].
    

标题交换器(Headers)

  • 原理:根据消息的头部属性匹配将消息发送到与之匹配的队列中。
  • 配置示例
    [
      {rabbit, [
        {headers_listeners, [
          {5672, ["localhost"]}
        ]}
      ]}
    ].
    

发送和接收消息

  • 发送消息

    import pika
    
    connection = pika.BlockingConnection(pika.ConnectionParameters('localhost', 5672, 'guest', 'guest'))
    channel = connection.channel()
    
    channel.exchange_declare(exchange='direct_logs', exchange_type='direct')
    channel.basic_publish(exchange='direct_logs', routing_key='info', body='Hello World!')
    print(" [x] Sent 'Hello World!'")
    
    connection.close()
    
  • 接收消息

    import pika
    
    connection = pika.BlockingConnection(pika.ConnectionParameters('localhost', 5672, 'guest', 'guest'))
    channel = connection.channel()
    
    channel.queue_declare(queue='')
    channel.queue_bind(exchange='', queue='', routing_key='')
    
    def callback(ch, method, properties, body):
      print(f" [x] Received {body}")
    
    channel.basic_consume(queue='', on_message_callback=callback, auto_ack=True)
    
    print(' [*] Waiting for messages. To exit press CTRL+C')
    channel.start_consuming()
    

以上步骤和示例代码展示了如何在Linux上配置RabbitMQ消息路由。请根据实际需求和环境调整配置。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:kafka rabbitmq如何实现消息路由

0