Bài viết được sự cho phép của tác giả Giang Phan
Trong các bài viết trước, tôi đã giới thiệu với các bạn cách tự cài đặt RabbitMQ. Trong bài này, tôi sẽ giới thiệu với các bạn CloudAMQP – một RabbitMQ Server trên nền tảng Cloud.
CloudAMQP là gì?
CloudAMQP cung cấp một RabbitMQ Server trên nền tảng Cloud. CloudAMQP tự động hóa toàn bộ quá trình thiết lập, vận hành và mở rộng quy mô của các RabbitMQ Cluster. CloudAMQP cung cấp giao diện quản lý trực quan, cung cấp hệ thống giám sát, thông báo RabbitMQ thông qua email, webhook, external service.
Khi sử dụng CloudAMQP, chúng ta không cần quan tâm về hạ tầng để quản lý RabbitMQ serrver, chúng ta chỉ tập trung vào phần business của mình. Giá thành của CloudAMQP khá linh động tuỳ thuộc vào nhu cầu sử dụng của bạn.
Trong bài viết này, tôi sẽ hướng dẫn các bạn đăng ký gói dịch vụ miễn phí của CloudAMQP. Gói này thích hợp cho các bạn developer, muốn tìm hiểu về RabbitMQ nhưng không muốn setup server RabbitMQ riêng.
Đăng ký tài khoản miễn phí CloudAMQP
Vào trang đăng ký: https://www.cloudamqp.com/plans.html
Kéo về cuối trang chọn gói FREE:
Các bạn điền các thông tin đăng ký.
Sau khi hoàn thành đăng ký, ở trang kế tiếp, chúng ta sẽ điền các thông tin để đăng ký RabbitMQ instance mà chúng ta sẽ sử dụng.
Chọn Region là Singapore hay HongKong. Ở đây mình chọn HongKong –> chọn Review.
Kiểm tra lại thông tin đăng ký, và chọn Create instance.
Chọn RabbitMQ Manager để vào trang quản lý RabbitMQ.
Chúng ta có một trang quản lý RabbitMQ như tự setup RabbitMQ Server ở các bài viết trước.
Tại trang danh sách Instance, các bạn click vào tên của instance để vào trang thông tin chi tiết instance của bạn trên CloudAMQP.
Sử dụng CloudAMQP
Các khái niệm và cách sử dụng RabbitMQ tôi đã giới thiệu với các bạn ở các bài viết trước hoàn toàn có thể sử dụng với CloudAMQP.
Đầu tiên, chúng ta cần thêm thư viện RabbitMQ AMQP client:
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.8.0</version>
</dependency>
Tôi sẽ sử dụng lại ví dụ ở bài viết “Kết nối AMQP Client với RabbitMQ Server” để thử kết nối đến CloudAMQP.
Producer
package
com.gpcoder.cloudamqp;
import
com.rabbitmq.client.Channel;
import
com.rabbitmq.client.Connection;
import
com.rabbitmq.client.ConnectionFactory;
import
java.io.BufferedReader;
import
java.io.InputStreamReader;
public
class
Producer {
private
static
final
String CLOUDAMQP_URL =
"amqps://evncuivu:<your_secret_url>.rmq.cloudamqp.com/evncuivu"
;
private
static
final
String QUEUE_NAME =
"gpcoder-queue"
;
public
static
void
main(String[] argv)
throws
Exception {
System.out.println(
"Create a ConnectionFactory"
);
ConnectionFactory factory =
new
ConnectionFactory();
factory.setUri(CLOUDAMQP_URL);
factory.setRequestedHeartbeat(
30
);
factory.setConnectionTimeout(
30000
);
System.out.println(
"Create a Connection"
);
System.out.println(
"Create a Channel"
);
try
( Connection connection = factory.newConnection();
Channel channel = connection.createChannel() ) {
System.out.println(
"Create a queue "
+ QUEUE_NAME);
channel.queueDeclare(QUEUE_NAME,
false
,
false
,
false
,
null
);
System.out.println(
"Start sending messages ... "
);
try
(BufferedReader br =
new
BufferedReader(
new
InputStreamReader(System.in));) {
String message;
do
{
System.out.print(
"Enter message: "
);
message = br.readLine().trim();
channel.basicPublish(
""
, QUEUE_NAME,
null
, message.getBytes());
System.out.println(
" [x] Sent: '"
+ message +
"'"
);
}
while
(!message.equalsIgnoreCase(
"close"
));
}
}
finally
{
System.out.println(
"Close connection and free resources"
);
}
}
}
Consumer:
package
com.gpcoder.cloudamqp;
import
com.rabbitmq.client.*;
public
class
Consumer {
private
static
final
String CLOUDAMQP_URL =
"amqps://evncuivu:<your_secret_url>.rmq.cloudamqp.com/evncuivu"
;
private
static
final
String QUEUE_NAME =
"gpcoder-queue"
;
public
static
void
main(String[] argv)
throws
Exception {
System.out.println(
"Create a ConnectionFactory"
);
ConnectionFactory factory =
new
ConnectionFactory();
factory.setUri(CLOUDAMQP_URL);
factory.setRequestedHeartbeat(
30
);
factory.setConnectionTimeout(
30000
);
System.out.println(
"Create a Connection"
);
System.out.println(
"Create a Channel"
);
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
System.out.println(
"Create a queue "
+ QUEUE_NAME);
channel.queueDeclare(QUEUE_NAME,
false
,
false
,
false
,
null
);
System.out.println(
" [*] Waiting for messages. To exit press CTRL+C"
);
System.out.println(
"Start receiving messages ... "
);
DeliverCallback deliverCallback = (consumerTag, delivery) -> {
String message =
new
String(delivery.getBody(),
"UTF-8"
);
System.out.println(
" [x] Received: '"
+ message +
"'"
);
};
CancelCallback cancelCallback = consumerTag -> { };
String consumerTag = channel.basicConsume(QUEUE_NAME,
true
, deliverCallback, cancelCallback);
System.out.println(
"consumerTag: "
+ consumerTag);
}
}
CLOUDAMQP_URL: các bạn lấy từ trang thông tin chi tiết instance của CloudAMQP.
Chạy thử ứng dụng để kiểm tra kết quả. Tham khảo bài viết trước: https://gpcoder.com/6885-ket-noi-amqp-client-voi-rabbitmq-server/#Chay_ung_dung
Chạy Producer và gửi một vài message:
Chạy Consumer, các bạn sẽ thấy các Message được Consume:
Vào trang quản lý RabbitMQ, bạn có thể thấy một Queue được tạo và các Message được gửi đến Queue này.
Trên đây là hướng dẫn cơ bản về CloudAMQP, các bạn có thể nhanh chóng tìm hiểu RabbitMQ mà không cần setup RabbitMQ server riêng. Còn rất nhiều tính năng khác được hỗ trợ bởi CloudAMQP, các bạn có thể tìm hiểu thêm ở link bên dưới.
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:
- Docker to Serverless (Google Cloud Platform)
- System Design Cơ Bản: Message Broker
- RabbitMQ là gì? Tìm hiểu và sử dụng RabbitMQ
Xem thêm Việc làm Developer hấp dẫn trên TopDev