Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Contribution Submission: MQTT v5 Input and Output components

Đang mở
#4,635 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
35/100
Loại issue
Tính năng
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Ít trao đổi
Công nghệ
go

Hướng nghiên cứu

Bắt đầu bằng việc đọc CONTRIBUTING.md §3.1.1 và các component input và output mqtt hiện có, sau đó xem xét cấu hình được đề xuất dựa trên paho.golang và phạm vi metadata. Công việc được xem là hoàn tất khi Redpanda xác nhận rằng hỗ trợ MQTT v5 là cần thiết, phê duyệt phạm vi và xác định các yêu cầu kỳ vọng về triển khai và kiểm thử cho các component mqtt5 mới.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Background

We are evaluating Redpanda Connect for use in our data pipelines, but this use case requires MQTT v5 support, which currently does not exist for Redpanda Connect. Currently only MQTT v3.1.1 is supported via the mqtt input and output using the paho.mqtt.golang library.

Prior Work

There were two prior attempts to contribute MQTT v5 support to Redpanda Connect:

  • PR #2197: Was closed due to withdrawal of the contribution on change from Benthos to Redpanda Connect.
  • PR #3731: Was closed due to unaccepted CLA.

Kafka Connect Equivalent

There is no Kafka Connect equivalent since the Kafka Connect MQTT source connector is also based on an MQTT v3.1.1 paho library.

Proposal

We would like to contribute a new mqtt5 input and output component. Per §3.1.1 of the CONTRIBUTING.md, code written by non-Redpanda engineers needs to be reviewed and scoped by Redpanda. We are opening this issue to ask for comments on two points:

  1. Is an MQTT v5 input and output component still desired/wanted by Redpanda?
  2. Is the following scope properly sized for a MQTT v5 input and output component?

Intended Scope

  • A new, separate mqtt5 input and output component.
  • Written in Go and based on paho.golang. This library is written by the same authors as the mqtt.paho.golang library that is already in use with the mqtt connector.
  • Code structure will mirror the existing mqtt connector where it makes sense.
  • All configuration fields shared with the existing mqtt connector are carried over unchanged
  • New mqtt5 input config options:
Field Notes
session_expiry_interval How long the broker retains session state after disconnect.
receive_maximum Maximum in-flight QoS 1/2 messages the broker may send to this client simultaneously.
maximum_packet_size Maximum packet size this client will accept from the broker.
no_local Subscription option: do not receive messages published by this client.
retain_as_published Subscription option: preserve the retain flag from the original publisher.
retain_handling Subscription option: controls whether retained messages are sent on subscribe.
topic_alias_maximum Maximum number of topic aliases this client will accept from the broker. 0 disables topic aliases.
subscription_identifiers Enables the use of subscription identifiers by the client.
will_* Full v5 will message config.
  • Metadata set by the mqtt5 input:
Metadata key Source
mqtt5_user_properties_<key> User Properties from the PUBLISH packet. If a key appears only once, it is stored as-is.
mqtt5_user_properties_<key>_<idx> User Properties from the PUBLISH packet can have the same key multiple times. If this happens they receive a zero-based index as a suffix
mqtt5_content_type Content Type
mqtt5_payload_format_indicator Payload Format Indicator
mqtt5_response_topic Response Topic
mqtt5_correlation_data Correlation Data
mqtt5_subscription_identifier Subscription identifier sent by the broker
  • New mqtt5 output config options:
Field Notes
session_expiry_interval How long the broker retains session state after disconnect.
message_expiry_interval Per-message TTL. Broker drops the message if undelivered before expiry.
topic_alias_maximum Maximum number of topic aliases this client will use when publishing. 0 disables topic aliases.
will_* Full v5 will message config.
  • Metadata read by the mqtt5 output:
Metadata key Written to
mqtt5_user_properties_<key> User Properties on the PUBLISH packet. Plain keys (mqtt5_user_properties_<key>) are written as single entries. Indexed keys (mqtt5_user_properties_<key>_0, _1, etc.) are reassembled into multiple User Properties with the same key, preserving order.
mqtt5_content_type Content Type
mqtt5_payload_format_indicator Payload Format Indicator
mqtt5_response_topic Response Topic
mqtt5_correlation_data Correlation Data
  • Other MQTT v5 Behavior:
    • Shared Subscriptions are supported by the underlying library.
    • Reason codes will be surfaced in error messages.
    • Server-initiated DISCONNECT is handled by the underlying library.
Ngôn ngữ chính
Go
Star
8.8k
Fork
975
Merge trung bình
2 ngày 8 giờ
Pull request đã merge (30 ngày)
72

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của redpanda-data/connect

Tất cả issue của redpanda-data/connect

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.