Cài đặt RabbitMQ

Bài viết được sự cho phép của tác giả Giang Phan

Trong bài này, tôi sẽ hướng dẫn các bạn cách cài đặt RabbitMQ Server. Có nhiều cách cài đặt, có thể sử dụng stanalone file, sử dụng package manager/ installer hay Docker.

  Giới thiệu CloudAMQP – Một RabbitMQ server trên Cloud
  Giới thiệu RabbitMQ Management Interface

Cài đặt RabbitMQ Server sử dụng Package manager

Cài đặt Erlang

Vì RabbitMQ được viết sử dụng ngôn ngữ Erlang nên để cài đặt nó các bạn cần cài đặt Erlang trước.

Với MacOS, không cần phải cài đặt Erlang bởi vì Homebrew cài đặt RabbitMQ đã bao gồm Erlang runtime dependency.

Cài đặt RabbitMQ trên MacOS

Đầu tiên, các bạn hãy download phiên bản mới nhất của RabbitMQ tại địa chỉ: https://www.rabbitmq.com/download.html.

Nó có nhiều phiên bản cho nhiều môi trường khác nhau nhưng trong bài viết này, hãy lựa chọn phiên bản phù hợp với hệ điều hành của các bạn. Ở đây mình đang sử dụng hệ điều hành macOS, do đó mình sẽ chọn Homebrew dành cho macOS.

Nếu bạn chưa cài HomeBrew (HomeBrew là một package manager dành cho macOS), hãy chạy lệnh sau để cài đặt nó trước:

https://raw.githubusercontent.com/Homebrew/install/master/install.sh

Mở Termial và chạy lệnh sau để cài đặt RabbitMQ: brew install rabbitmq

Thêm rabbitmq vào biến môi trường, chạy lệnh:

export PATH=$PATH:/usr/local/opt/rabbitmq/sbin

Chạy lệnh rabbitmq-server để start RabbitMQ Server.

Sau khi khởi động RabbitMQ, chúng ta có thể theo dõi và quản lý RabbitMQ từ giao diện web ở cổng 15672. Các bạn có thể truy cập vào trang này bằng URL sau: http://localhost:15672/ với username và password là guest/guest.

Trường hợp không thể truy cập Management UI cho RabbitMQ, bạn thực hiện lệnh sau:

rabbitmq-plugins enable rabbitmq_management

Sau khi login sẽ thấy kết quả như sau:

Cài đặt RabbitMQ trên Window

Các bạn tham khảo liên kết bên dưới:

Cài đặt RabbitMQ Server sử dụng Docker

Hãy chắc chắn rằng Docker đã được cài đặt trên máy của bạn:

$ docker -v Docker version 19.03.5, build 633a0ea $ docker-compose -v docker-compose version 1.25.4, build 8d51620a

Bạn có thể sử dụng docker command sau để Start RabbitMQ Server trên docker:

docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

Hay theo hướng dẫn trên DockerHub.

Trong bài này tôi sẽ hướng dẫn sử dụng docker compose vì nó dễ hiểu và dễ cấu hình hơn. Tạo file docker-compose.yaml với nội dung như sau:

version: "3.7" # https://docs.docker.com/compose/compose-file/ services:   rabbitmq:     image: 'rabbitmq:3.6-management-alpine'     ports:       # The standard AMQP protocol port       - '5672:5672'       # HTTP management UI       - '15672:15672'     environment:       # The location of the RabbitMQ server.  "amqp" is the protocol;       # "rabbitmq" is the hostname.  Note that there is not a guarantee       # that the server will start first!  Telling the pika client library       # to try multiple times gets around this ordering issue.       AMQP_URL: 'amqp://rabbitmq?connection_attempts=5&retry_delay=5'       RABBITMQ_DEFAULT_USER: "guest"       RABBITMQ_DEFAULT_PASS: "guest"     networks:       - network networks:   # Declare our private network.  We must declare one for the magic   # Docker DNS to work, but otherwise its default settings are fine.   network: {}

Chạy lệnh docker-compose up để chạy RabbitMQ trên docker. Bạn sẽ thấy một vài thông tin tương tự như sau:

ptgiang@Phans-MacBook-Pro workspace % docker-compose up WARNING: The Docker Engine you're using is running in swarm mode. Compose does not use swarm mode to deploy services to multiple nodes in a swarm. All containers will be scheduled on the current node. To deploy your application across the swarm, use `docker stack deploy`. Creating network "workspace_network" with the default driver Pulling rabbitmq (rabbitmq:3.6-management-alpine)... 3.6-management-alpine: Pulling from library/rabbitmq cd784148e348: Pull complete 6942394937c2: Pull complete 9b810cb4438e: Pull complete 05c43906cd73: Pull complete fedf5b1b1c33: Pull complete fde114ead4a3: Pull complete 046b8cc56402: Pull complete e2b994cef718: Pull complete d156eba9441a: Pull complete 2cd20e13ffc0: Pull complete 4c5a843376d8: Pull complete Digest: sha256:483745c7faebb33214e0b2630d99c23c725434dd7c388339fc4083217bd004fb Status: Downloaded newer image for rabbitmq:3.6-management-alpine Creating workspace_rabbitmq_1 ... done Attaching to workspace_rabbitmq_1 rabbitmq_1  |  rabbitmq_1  |               RabbitMQ 3.6.16. Copyright (C) 2007-2018 Pivotal Software, Inc. rabbitmq_1  |   ##  ##      Licensed under the MPL.  See http://www.rabbitmq.com/ rabbitmq_1  |   ##  ## rabbitmq_1  |   ##########  Logs: tty rabbitmq_1  |   ######  ##        tty rabbitmq_1  |   ########## rabbitmq_1  |               Starting broker... rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:12 === rabbitmq_1  | Starting RabbitMQ 3.6.16 on Erlang 20.3.4 rabbitmq_1  | Copyright (C) 2007-2018 Pivotal Software, Inc. rabbitmq_1  | Licensed under the MPL.  See http://www.rabbitmq.com/ rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:12 === rabbitmq_1  | node           : rabbit@d1e976e92e15 rabbitmq_1  | home dir       : /var/lib/rabbitmq rabbitmq_1  | config file(s) : /etc/rabbitmq/rabbitmq.config rabbitmq_1  | cookie hash    : Qm0QQJJKqEXRR/3nQigarw== rabbitmq_1  | log            : tty rabbitmq_1  | sasl log       : tty rabbitmq_1  | database dir   : /var/lib/rabbitmq/mnesia/rabbit@d1e976e92e15 rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:15 === rabbitmq_1  | Memory high watermark set to 795 MiB (834314240 bytes) of 1989 MiB (2085785600 bytes) total rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:15 === rabbitmq_1  | Enabling free disk space monitoring rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:15 === rabbitmq_1  | Disk free limit set to 50MB rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:15 === rabbitmq_1  | Limiting to approx 1048476 file handles (943626 sockets) rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:15 === rabbitmq_1  | FHC read buffering:  OFF rabbitmq_1  | FHC write buffering: ON rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:15 === rabbitmq_1  | Database directory at /var/lib/rabbitmq/mnesia/rabbit@d1e976e92e15 is empty. Initialising from scratch... rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:15 === rabbitmq_1  |     application: mnesia rabbitmq_1  |     exited: stopped rabbitmq_1  |     type: temporary rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:16 === rabbitmq_1  | Waiting for Mnesia tables for 30000 ms, 9 retries left rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:16 === rabbitmq_1  | Waiting for Mnesia tables for 30000 ms, 9 retries left rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:16 === rabbitmq_1  | Waiting for Mnesia tables for 30000 ms, 9 retries left rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:16 === rabbitmq_1  | Priority queues enabled, real BQ is rabbit_variable_queue rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:16 === rabbitmq_1  | Starting rabbit_node_monitor rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:16 === rabbitmq_1  | Management plugin: using rates mode 'basic' rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:16 === rabbitmq_1  | msg_store_transient: using rabbit_msg_store_ets_index to provide index rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:16 === rabbitmq_1  | msg_store_persistent: using rabbit_msg_store_ets_index to provide index rabbitmq_1  |  rabbitmq_1  | =WARNING REPORT==== 5-Apr-2020::17:01:16 === rabbitmq_1  | msg_store_persistent: rebuilding indices from scratch rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:16 === rabbitmq_1  | Adding vhost '/' rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:16 === rabbitmq_1  | Creating user 'guest' rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:16 === rabbitmq_1  | Setting user tags for user 'guest' to [administrator] rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:16 === rabbitmq_1  | Setting permissions for 'guest' in '/' to '.*', '.*', '.*' rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:16 === rabbitmq_1  | started TCP Listener on [::]:5672 rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:16 === rabbitmq_1  | Management plugin started. Port: 15672 rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:16 === rabbitmq_1  | Statistics database started. rabbitmq_1  |  completed with 6 plugins. rabbitmq_1  |  rabbitmq_1  | =INFO REPORT==== 5-Apr-2020::17:01:16 === rabbitmq_1  | Server startup complete; 6 plugins started. rabbitmq_1  |  * rabbitmq_management rabbitmq_1  |  * rabbitmq_web_dispatch rabbitmq_1  |  * cowboy rabbitmq_1  |  * rabbitmq_management_agent rabbitmq_1  |  * amqp_client rabbitmq_1  |  * cowlib

Chúng ta có thể theo dõi và quản lý RabbitMQ từ giao diện web ở cổng 15672, và sử dụng port 5672 để nhắn tin thông qua giao thức AMQP.

Các bạn có thể truy cập vào trang này bằng URL sau: http://localhost:15672/ với username và password là guest/guest như đã cấu hình trong file docker-compose.yaml.

Nếu bạn có thể thấy giao diện login và admin như cài đặt thông qua Package Manager nghĩa là chúng ta đã cài đặt thành công.

Tài liệu tham khảo:

Bài viết gốc được đăng tải tại gpcoder.com

Có thể bạn quan tâm:

Xem thêm Việc làm IT hấp dẫn trên TopDev