天天看點

RabbitMQ:Docker Compose部署RabbitMQ叢集

部署RabbitMQ叢集

建立目錄,用于存放​

​Docker Compose​

​​部署​

​RabbitMQ​

​​叢集的​

​yaml​

​檔案:

mkdir -p /root/composefile/rabbitmq      

寫入該​

​yaml​

​檔案:

vim /root/composefile/rabbitmq/rabbitmq_cluster.yaml      

内容如下所示:

version: '3'
services:
    rabbitmq1:
        image: rabbitmq:management
        restart: always
        ports:
          - "15673:15672"
          - "5673:5672"
        hostname: rabbitmq1
        container_name: rabbitmq1
        environment:
          - RABBITMQ_DEFAULT_USER=admin
          - RABBITMQ_DEFAULT_PASS=admin
          - RABBITMQ_ERLANG_COOKIE=rabbitmq_erlang_cookie
    rabbitmq2:
        image: rabbitmq:management
        restart: always
        ports:
            - "5674:5672"
        hostname: rabbitmq2
        container_name: rabbitmq2
        environment:
          - RABBITMQ_ERLANG_COOKIE=rabbitmq_erlang_cookie
        links:
          - rabbitmq1
    rabbitmq3:
        image: rabbitmq:management
        restart: always
        ports:
          - "5675:5672"
        hostname: rabbitmq3
        container_name: rabbitmq3
        environment:
          - RABBITMQ_ERLANG_COOKIE=rabbitmq_erlang_cookie
        links:
          - rabbitmq1
          - rabbitmq2      

​rabbitmq:management​

​​鏡像是開啟管理插件的​

​RabbitMQ​

​​鏡像,環境變量​

​RABBITMQ_ERLANG_COOKIE​

​需要一緻,開始部署:

docker compose -f /root/composefile/rabbitmq/rabbitmq_cluster.yaml up -d      

​up​

​完成。

[+] Running 13/13
 ⠿ rabbitmq3 Pulled                                                                                                                                                                                        41.5s
   ⠿ 08c01a0ec47e Pull complete                                                                                                                                                                            19.2s
   ⠿ 1ceb23964d6c Pull complete                                                                                                                                                                            19.8s
   ⠿ 64631f643e2c Pull complete                                                                                                                                                                            33.1s
   ⠿ 67525726a753 Pull complete                                                                                                                                                                            33.2s
   ⠿ 4b28b554c25b Pull complete                                                                                                                                                                            34.4s
   ⠿ 3afdc08bc87a Pull complete                                                                                                                                                                            34.5s
   ⠿ 1e22dd212ab8 Pull complete                                                                                                                                                                            34.6s
   ⠿ b585ed397156 Pull complete                                                                                                                                                                            34.7s
   ⠿ 68de743a7628 Pull complete                                                                                                                                                                            34.7s
 ⠿ rabbitmq1 Pulled                                                                                                                                                                                        41.5s
   ⠿ 68b52ebaee48 Pull complete                                                                                                                                                                            36.1s
 ⠿ rabbitmq2 Pulled                                                                                                                                                                                        41.5s
[+] Running 4/4
 ⠿ Network rabbitmq_default  Created                                                                                                                                                                        0.3s
 ⠿ Container rabbitmq1       Started                                                                                                                                                                        2.8s
 ⠿ Container rabbitmq2       Started                                                                                                                                                                        3.3s
 ⠿ Container rabbitmq3       Started                                                                                                                                                                        5.3s      

列出正在運作的​

​compose​

​項目。

docker compose ls      

​RabbitMQ​

​叢集的所有節點都在運作。

NAME                STATUS
rabbitmq            running(3)      

将​

​rabbitmq1​

​​作為主節點,需要在​

​rabbitmq2​

​​和​

​rabbitmq3​

​中執行一些指令,将它們加入到叢集。

進入​

​rabbitmq2​

​:

docker exec -it rabbitmq2 /bin/bash      

執行:

rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@rabbitmq1
rabbitmqctl start_app

# 離開容器
exit      

進入​

​rabbitmq3​

​:

docker exec -it rabbitmq3 /bin/bash      

執行:

rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@rabbitmq1
rabbitmqctl start_app

# 離開容器
exit      

通路​

​rabbitmq1​

​​的管理界面可以看到​

​RabbitMQ​

​叢集的三個節點。

RabbitMQ:Docker Compose部署RabbitMQ叢集

測試

測試代碼參考下面這篇部落格:

  • ​​RabbitMQ:@RabbitListener注解簡化消息監聽​​

隻需要修改配置檔案:

spring:
  rabbitmq:
    addresses: 192.168.1.7:5673,192.168.1.9:5674,192.168.1.9:5675
    username: admin
    password: admin      

啟動應用,​

​Spring Boot​

​​會和​

​RabbitMQ​

​建立連接配接。

RabbitMQ:Docker Compose部署RabbitMQ叢集
RabbitMQ:Docker Compose部署RabbitMQ叢集

使用​

​Postman​

​請求接口。

RabbitMQ:Docker Compose部署RabbitMQ叢集

​RabbitMQ​

​管理界面可以看到消息記錄。

RabbitMQ:Docker Compose部署RabbitMQ叢集

消費者也監聽到了這條消息。

繼續閱讀