Contribution Submission: MQTT v5 Input and Output components
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Da chiarire
- Stato di attività
- Tranquilla
- Stack tecnologico
- go
- Ambito
- data-engineering, stream-processing
Direzione di ricerca
Inizia leggendo CONTRIBUTING.md §3.1.1 e i componenti mqtt di input e output esistenti, quindi esamina la configurazione proposta basata su paho.golang e l'ambito dei metadati. Il lavoro è completato quando Redpanda conferma che il supporto per MQTT v5 è richiesto, approva l'ambito e definisce le aspettative di implementazione e test per i nuovi componenti mqtt5.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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:
- Is an MQTT v5 input and output component still desired/wanted by Redpanda?
- Is the following scope properly sized for a MQTT v5 input and output component?
Intended Scope
- A new, separate
mqtt5input 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
mqttconnector. - Code structure will mirror the existing
mqttconnector where it makes sense. - All configuration fields shared with the existing
mqttconnector are carried over unchanged - New
mqtt5input 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
mqtt5input:
| 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
mqtt5output 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
mqtt5output:
| 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.
- Lingua principale
- Go
- Stelle
- 8.8k
- Fork
- 975
- Merge medio
- 2g 8h
- PR unite (30g)
- 72
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di redpanda-data/connect
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
redpanda-data/connect#4837 ·
I maintainer di solito rispondono entro 1 giorno
-
Iceberg output: the `row_operation` example uses a non-existent bloblang ternaryForse già presa @Tyagiquamar l’ha presa 24 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
redpanda-data/connect#4711 ·
I maintainer di solito rispondono entro 1 giorno
-
URL Secrets Exposure in LogsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
redpanda-data/connect#4705 ·
I maintainer di solito rispondono entro 1 giorno
-
opensearch output: action does not support "create"Forse già presa @highlyavailable l’ha presa 92 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
redpanda-data/connect#4515 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Minor issue with slack_post component in Redpanda Connect.Forse già presa @hsdfat l’ha presa 71 giorni fa. Apertaneeds investigation
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
redpanda-data/connect#4511 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di redpanda-data/connect
Issue simili
-
unbounded value for n in `/v1/logs` can panic/OOMForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertasmall item
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
canonical/pebble#1127 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
[schema-coverage] elasticstack_elasticsearch_synonym_set (data source)Forse già presa @github-actions l’ha presa oggi. Apertaacceptance-tests phase-coding schema-coverage testing triaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 81/100
elastic/terraform-provider-elasticstack#5211 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 89/100
open-policy-agent/opa#9366 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
defect
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
nats-io/nats-server#8752 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement needs-acceptance wg/router-models-inference-runtime
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
vllm-project/semantic-router#5015 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno