Fix:SQS-message retention period consideration (#3642)
* Fix:SQS-message retention period consideration * Fix:SQS-message retention period consideration * Fix:SQS-message retention period consideration * Added comments &linting * Fixed tests
This commit is contained in:
parent
4d0ee82f98
commit
d8097b24dc
2 changed files with 54 additions and 8 deletions
|
|
@ -827,6 +827,8 @@ class SQSBackend(BaseBackend):
|
|||
queue.pending_messages.add(message)
|
||||
message.mark_received(visibility_timeout=visibility_timeout)
|
||||
_filter_message_attributes(message, message_attribute_names)
|
||||
if not self.is_message_valid_based_on_retention_period(queue_name):
|
||||
break
|
||||
result.append(message)
|
||||
if len(result) >= count:
|
||||
break
|
||||
|
|
@ -1004,6 +1006,15 @@ class SQSBackend(BaseBackend):
|
|||
def list_queue_tags(self, queue_name):
|
||||
return self.get_queue(queue_name)
|
||||
|
||||
def is_message_valid_based_on_retention_period(self, queue_name):
|
||||
message_attributes = self.get_queue_attributes(queue_name, [])
|
||||
retain_until = message_attributes.get(
|
||||
"MessageRetentionPeriod"
|
||||
) + message_attributes.get("CreatedTimestamp")
|
||||
if retain_until <= unix_time():
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
sqs_backends = {}
|
||||
for region in Session().get_available_regions("sqs"):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue