chore: release v0.3.1#232
Merged
Merged
Conversation
Contributor
QualOps Code Quality AnalysisStatus: ✅ PASSED - No issues found Summary
No issues found in the analyzed code. 📊 Full ReportPowered by QualOps |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release v0.3.1
Fixed
filter_by_message,data_type, andfilter_by_datasubscriptions raisedTypeErrorat subscribe time underFastStream 0.7, which removed publisher/subscriber-level middlewares. Filtering
and typed-message handling are now applied in EggAI's own handler wrapper
(application code) rather than via FastStream subscriber middlewares — aligning
with FastStream 0.7's removal of subscriber/publisher middlewares. This keeps the
per-subscription filter logic independent of FastStream's middleware API (it is
the same approach the in-memory transport already uses). As part of this,
data_typesubscriptions on Redis/Kafka now deliver the typed model instanceto the handler (matching the in-memory transport and the documented behaviour),
rather than the raw dict. Invalid filter-option combinations now raise
ValueErrorinstead of silently dropping an option:data_typeandfilter_by_messageare mutually exclusive, andfilter_by_datarequiresdata_type. These validations are consistent across the Redis, Kafka, andin-memory transports.
Added
max_lenandretry_max_lenconstructor options to capRedis stream growth via approximate trimming (
XADD ... MAXLEN ~).max_len(default
None/unbounded) caps the producer/publish()path; it is opt-inbecause
MAXLENtrims the oldest entries by count regardless of ack state, so avalue below
throughput × consumer-lagcan drop un-delivered messages.retry_max_len(default10_000) caps the SDK-managed retry and DLQ streams,bounding the blast radius of a runaway retry loop. This wires up the previously
documented-but-inert
max_lenknob.Changed
value (
{handler_id}-{hostname}-{pid}) while the consumer group still defaultsto the stable
handler_id. A fleet of workers running the same handler now sharesone group (Redis load-balances the stream across them) while each worker owns a
distinct slice of the pending-entries list — the competing-consumers pattern. The
auto-created retry-stream subscriber gets the same per-process-unique consumer, so
retried messages load-balance across a worker fleet too. Pass an explicit
consumer=to opt out.After merging, the release will be automatically tagged and published to PyPI.