Làm thế nào để EMQ duy trì tin nhắn QoS 1/2?


10

Các EMQ (Erlang MQTT Broker) là một "phân phối, ồ ạt mở rộng, dễ mở rộng môi giới nhắn MQTT" với một báo cáo "1,3 triệu kết nối đồng thời MQTT" - vì vậy nó có khả năng cho phép một số lượng lớn các khách hàng để xuất bản và đăng ký với nó. Có vẻ như một số khách hàng có thể bị ngắt kết nối tại bất kỳ thời điểm nào.

Như câu hỏi này Điều gì xảy ra nếu Mosquitto hết bộ nhớ để lưu các tin nhắn QoS 1/2? hỏi về Mosquitto:

Trong MQTT, tin nhắn có QoS 1 hoặc 2 phải được gửi ít nhất một lần (tin nhắn QoS 2 phải được gửi chính xác một lần). Nếu khách hàng không được kết nối, nhà môi giới phải lưu trữ tin nhắn cho đến khi khách hàng sẵn sàng nhận nó.

Vậy làm thế nào để EMQ duy trì các tin nhắn QoS 1/2 cho đến khi gửi, tức là khởi động lại nhà môi giới hoặc liên quan đến giới hạn bộ nhớ?


Câu trả lời:


6

Vậy làm thế nào để EMQ duy trì các tin nhắn QoS 1/2 cho đến khi gửi, tức là khởi động lại nhà môi giới hoặc liên quan đến giới hạn bộ nhớ?

Câu trả lời dường như là: không . Vấn đề này trên trình theo dõi lỗi của họ nói:

Tôi đang phải đối mặt với vấn đề lưu trữ các phiên khách hàng liên tục sau khi môi giới khởi động lại. Hiện tại tính năng này không có trong nhà môi giới hay tôi thiếu một số cấu hình?

Các nhà môi giới sẽ không tiếp tục phiên.

Ngoài ra, sau khi tìm hiểu thêm một vài vấn đề, tôi đã tìm thấy báo cáo này :

Ban đầu tôi đã đặt các máy khách tối đa là 1000K trong emqttd.config. Máy của chúng tôi có bộ nhớ 8 GB với 4 lõi, tôi có thể dễ dàng kết nối kết nối đồng thời 120K nhưng khi vượt quá bộ nhớ 8 GB, emqttd tự chấm dứt. Những gì tôi nghĩ là đặt một máy khách tối đa trên mỗi máy sẽ tốt hơn nhiều.

Về cơ bản, kể từ phiên bản v2.0.5:

  • Tin nhắn dường như không được lưu vào một tập tin.
  • Một khi người môi giới hết bộ nhớ, nó sẽ đơn giản sụp đổ.

Không chính xác lý tưởng, nhưng đó dường như là hành vi hiện tại, vì vậy nếu các thông báo vẫn còn quan trọng đối với trường hợp sử dụng của bạn, hãy sử dụng một nhà môi giới khác.


1
Có vẻ là kỳ lạ (để nói rằng ít nhất) cho một nhà môi giới mqtt có khả năng mở rộng quy mô lớn.
Ghanima

Nếu bạn đang tìm kiếm một nhà môi giới MQTT phân tán thực hiện các thông báo QoS1 / 2 liên tục vào đĩa (sử dụng LevelDB), thì có thể xem VerneMQ ( vernemq.com ).
Lars Hesel Christensen

Mmmh trong khi emqtt không tự lưu trữ thông điệp, nó có thể được kết nối với một số cơ sở dữ liệu, vì vậy tôi giả sử đó là những gì nó làm. Bạn đã kiểm tra chưa?
Fabien Papleux
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.