溫馨提示×

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

小樊
100
2025-02-17 22:44:35
欄目: 智能運維

在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消息路由。請根據實際需求和環境調整配置。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女