GP Coder

Trang chia sẻ kiến thức lập trình Java

  • Java Core
    • Basic Java
    • OOP
    • Exception Handling
    • Multi-Thread
    • Java I/O
    • Networking
    • Reflection
    • Collection
    • Java 8
  • Design pattern
    • Creational Pattern
    • Structuaral Pattern
    • Behavior Pattern
  • Web Service
    • SOAP
    • REST
  • JPA
  • Java library
    • Report
    • Json
    • Unit Test
  • Message Queue
    • ActiveMQ
    • RabbitMQ
  • All
Trang chủ Message Queue Cài đặt RabbitMQ

Cài đặt RabbitMQ

Đăng vào 14/05/2020 . Được đăng bởi GP Coder . 9739 Lượt xem . Toàn màn hình

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.

Nội dung

  • 1 Cài đặt RabbitMQ Server sử dụng Package manager
  • 2 Cài đặt RabbitMQ Server sử dụng Docker

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:

  • https://www.rabbitmq.com/install-windows.html
  • https://www.rabbitmq.com/install-windows-manual.html

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:

  • https://www.rabbitmq.com/install-homebrew.html
  • https://www.rabbitmq.com/install-generic-unix.html#operations
  • https://www.rabbitmq.com/management.html
5.0
05
Nếu bạn thấy hay thì hãy chia sẻ bài viết cho mọi người nhé! Và Donate tác giả

Shares

Chuyên mục: Message Queue Được gắn thẻ: JMS, Message Queue, RabbitMQ

Giới thiệu RabbitMQ
Giới thiệu RabbitMQ Management Interface

Có thể bạn muốn xem:

  • Sử dụng publisher confirm trong RabbitMQ (16/06/2020)
  • Giới thiệu CloudAMQP – Một RabbitMQ server trên Cloud (02/10/2020)
  • Giới thiệu JMS – Java Message Services (30/04/2020)
  • Sử dụng Alternate Exchange trong RabbitMQ (10/06/2020)
  • Sử dụng Dead Letter Exchange trong RabbitMQ (13/06/2020)

Bình luận

bình luận

Tìm kiếm

Bài viết mới

  • Clean code 13/01/2024
  • Giới thiệu CloudAMQP – Một RabbitMQ server trên Cloud 02/10/2020
  • Kết nối RabbitMQ sử dụng Web STOMP Plugin 19/06/2020
  • Sử dụng publisher confirm trong RabbitMQ 16/06/2020
  • Sử dụng Dead Letter Exchange trong RabbitMQ 13/06/2020

Xem nhiều

  • Hướng dẫn Java Design Pattern – Factory Method (97379 lượt xem)
  • Hướng dẫn Java Design Pattern – Singleton (97027 lượt xem)
  • Giới thiệu Design Patterns (86694 lượt xem)
  • Lập trình đa luồng trong Java (Java Multi-threading) (85527 lượt xem)
  • Giới thiệu về Stream API trong Java 8 (83073 lượt xem)

Nội dung bài viết

  • 1 Cài đặt RabbitMQ Server sử dụng Package manager
  • 2 Cài đặt RabbitMQ Server sử dụng Docker

Lưu trữ

Thẻ đánh dấu

Annotation Authentication Basic Java Behavior Pattern Collection Creational Design Pattern Cấu trúc điều khiển Database Dependency Injection Design pattern Eclipse Exception Executor Service Google Guice Gson Hibernate How to Interceptor IO Jackson Java 8 Java Core JDBC JDK Jersey JMS JPA json JUnit JWT Message Queue Mockito Multithreading OOP PowerMockito RabbitMQ Reflection Report REST SOAP Structuaral Pattern Swagger Thread Pool Unit Test Webservice

Liên kết

  • Clean Code
  • JavaTpoint
  • Refactoring Guru
  • Source Making
  • TutorialsPoint
  • W3Schools Online Web Tutorials

Giới thiệu

GP Coder là trang web cá nhân, được thành lập với mục đích lưu trữ, chia sẽ kiến thức đã học và làm việc của tôi. Các bài viết trên trang này chủ yếu về ngôn ngữ Java và các công nghệ có liên quan đến Java như: Spring, JSF, Web Services, Unit Test, Hibernate, SQL, ...
Hi vọng góp được chút ít công sức cho sự phát triển cộng đồng Coder Việt.

Donate tác giả

Tìm kiếm các bài viết của GP Coder với Google Search

Liên hệ

Các bạn có thể liên hệ với tôi thông qua:
  • Trang liên hệ
  • Linkedin: gpcoder
  • Email: contact@gpcoder.com
  • Skype: ptgiang56it

Follow me

Copyright 2025 © GP Coder · All Rights Reserved · Giới thiệu · Chính sách · Điều khoản · Liên hệ ·

Share

Blogger
Delicious
Digg
Email
Facebook
Facebook messenger
Flipboard
Google
Hacker News
Line
LinkedIn
Mastodon
Mix
Odnoklassniki
PDF
Pinterest
Pocket
Print
Reddit
Renren
Short link
SMS
Skype
Telegram
Tumblr
Twitter
VKontakte
wechat
Weibo
WhatsApp
X
Xing
Yahoo! Mail

Copy short link

Copy link