Change receive_filter to single-message behavior#123
Open
Change receive_filter to single-message behavior#123
Conversation
Implement separate tracking for filter failures vs processing failures: - Filter failures: Tracked via custom FilterFailCount message attribute - Processing failures: Handled by SQS native redrive policy When a message fails the filter max_filter_failures times, it's moved to the configured DLQ. This prevents messages that never match filters from cycling indefinitely while keeping filter failures separate from actual processing failures (NACs).
Previously, receive_filter would poll SQS repeatedly until a matching message was found or timeout was reached. This changes it to receive a single message and immediately return NoData if it doesn't match the filter, delegating retry logic to the caller. This simplifies the implementation and provides more predictable behavior aligned with the timeout parameter representing wait time for message arrival rather than total polling duration.
|
Hi, I'm a bit confused by this PR. The PR title suggests you're changing existing behavior, but you're actually adding new functionality to receive/nack messages based on a filter? To be honest, this seems like an inefficient (and potentially expensive) use of SQS. I'm not sure it's something we'd want to support natively in the library. |
Expose wrap_message method to allow external construction of Delivery objects from SQS messages.
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.
Summary
receive_filterto receive a single message instead of polling repeatedlyNoDataimmediately if message doesn't match filter, delegating retry logic to callerDetails
Previously,
receive_filterwould poll SQS repeatedly until a matching message was found or timeout was reached. This changes it to receive a single message and immediately returnNoDataif it doesn't match the filter.The timeout parameter now represents the wait time for a message to arrive from SQS (long polling), rather than the total duration to keep polling for a matching message.
This provides: