Skip to content

ref(producer): Port producers to ReloadingKafkaProducer - #834

Draft
untitaker wants to merge 3 commits into
mainfrom
markusunterwaditzer/stream-1964-port-taskbroker-producers-to-reloadingproducer
Draft

untitaker wants to merge 3 commits into
mainfrom
markusunterwaditzer/stream-1964-port-taskbroker-producers-to-reloadingproducer

Conversation

@untitaker

@untitaker untitaker commented Oct 28, 2026 •

Copy link
Copy Markdown
Member

Switches Taskbroker's KafkaProducer from arroyo's AsyncKafkaProducer to ReloadingKafkaProducer. Only the constructor changes: ReloadingKafkaProducer implements the same AsyncProducer trait (getsentry/arroyo#591), so send() still waits for the broker to confirm delivery. Upkeep relies on that to only mark retries and deadletters as done once they are in Kafka.

Config still comes from Taskbroker's own config through from_config. Loading the shared configmap is STREAM-1967.

  • ignore_key_ordering: true: Taskbroker sends without keys, so a reload swaps clients right away instead of holding back sends.
  • KafkaProducer::new takes a topic, which only selects the producer's entry in the shared config: the deadletter topic for the upkeep and batcher producers, the demoted topic for upkeep's forwarding producer. Producers still send to other topics on the same cluster (retry, demoted). Moving to one producer per topic is left for later; Taskbroker builds its own Kafka config for now, so it already knows every topic's cluster.

Draft until arroyo#591 is released. sentry_arroyo points at that branch for now.

ref STREAM-1964

Switch KafkaProducer from arroyo's AsyncKafkaProducer to
ReloadingKafkaProducer. Sends still wait for delivery, using the new
produce_record_with_delivery. Config still comes from Taskbroker's own
config; loading the shared configmap is tracked separately.

Points sentry_arroyo at the getsentry/arroyo#591 branch until that is
released.

ref STREAM-1964
@linear-code

linear-code Bot commented Oct 28, 2026

Copy link
Copy Markdown

STREAM-1964

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant