[Python cơ bản thường dùng trong công việc] Phần 12 : Kết nối RabbitMQ
RabbitMQ là gì?
RabbitMQ là một phần mềm cho phép xây dựng Message Queue theo protocol AMQP và khá thông dụng trên thế giới. Để kết nối đến RabbitMQ trên Python, ta sẽ sử dụng thư viện pika
.
12.1. Cài đặt
Có thể xem thêm về hướng dẫn cài đặt thư viện này tại https://pika.readthedocs.org/en/0.10.0/
Đơn giản cài thông qua pip
là:
$ sudo pip install pika
12.2 Gởi một message đến Server – Provider
Ví dụ để gởi một message đến server
import pika connection = pika.BlockingConnection(pika.ConnectionParameters('localhost')) channel = connection.channel() channel.queue_declare(queue='hello') channel.basic_publish(exchange='', routing_key='hel lo', body='Hello World!') print " [x] Sent 'Hello World!'" connection.close()
Để gởi một message, chúng ta cần kết nối đến server và khai báo một channel, ở đây là channel có tên là hello
. Sau khi khai báo channel, tao tiến hành gởi message có nội dung Hello World!
thông qua channel này, kèm theo khai báo routing_key
là hello
. Routing Key sẽ giúp điều hướng message này đến đúng các worker được khai báo nhận message theo routing key (Consumer)
12.3. Nhận message – Consumer
Ở bước trước, ta đã tạo một message lên queue. Ở bước này, ta sẽ khai báo một worker xử lý các message nhận được từ channel hello
.
import pika connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost')) channel = connection.channel() channel.queue_declare(queue='hello') print ' [*] Waiting for messages. To exit press CTR L+C' def callback(ch, method, properties, body): print " [x] Received %r" % (body,) channel.basic_consume(callback, queue='hello', no_a ck=True) channel.start_consuming()
Đoạn code này cũng có phần khai báo connection
, channel
. Tuy nhiên, vì là consumer nên sẽ sử dụng phương thức basic_consume
để lắng nghe trên queue hello
, khi có message đến sẽ gọi hàm callback()
để xử lý. Trong trường hợp ví dụ này thì callback chỉ đơn giản là hiển thị chuỗi thông báo đã nhận được message.
12.4. Tìm hiểu thêm về RabbitMQ và Pika
Nội dung chương này không có ý định giới thiệu tất cả khái niệm của AMQP cũng như RabbitMQ mà chủ yếu giới thiệu thư viện pika để làm việc với RabbitMQ. Bạn có thể tiếp tục theo dõi các hướng dẫn về khái niệm của RabbitMQ và Pika tại website chính thức của RabbitMQ.
- B BenQ RD Series – Dòng Màn Hình Lập Trình 4k+ Đầu Tiên Trên Thế Giới
- F Framework nào tốt nhất cho dự án của bạn? – Checklist chi tiết
- K Kinh nghiệm xử lý responsive table hiệu quả
- S Stackoverflow là gì? Bí kíp tận dụng Stack Overflow hiệu quả
- 7 7 kinh nghiệm hữu ích khi làm việc với GIT trong dự án
- B Bài tập Python từ cơ bản đến nâng cao (có lời giải)
- B Bảo mật API là gì? Một số nguyên tắc và kỹ thuật cần biết
- H Hướng dẫn cài đặt và tự học lập trình Python cơ bản từ A-Z
- C Chinh Phục Phân Tích Dữ Liệu Với Pandas Trong Python: Hướng Dẫn Từng Bước
- D Display CSS là gì? Cách khai báo và sử dụng thuộc tính display trong CSS