83 lines
2.4 KiB
Python
83 lines
2.4 KiB
Python
import boto3
|
|
import base64
|
|
|
|
|
|
class receiveFromSQS(object):
|
|
"""docstring for receiveFromSQS"""
|
|
|
|
def __init__(self, session, queueURL):
|
|
super(receiveFromSQS, self).__init__()
|
|
self.session = session
|
|
self.sqs = session.client('sqs')
|
|
self.queueURL = queueURL
|
|
|
|
@classmethod
|
|
def createSession(cls, profileName, queueURL):
|
|
session = boto3.Session(profile_name=profileName)
|
|
return cls(session, queueURL)
|
|
|
|
def getQueueLength(self):
|
|
attributeNames = ['ApproximateNumberOfMessages']
|
|
self.queueAttributes = self.sqs.get_queue_attributes(
|
|
QueueUrl=self.queueURL,
|
|
AttributeNames=attributeNames,
|
|
)
|
|
self.queueLength = int(
|
|
self.queueAttributes['Attributes'][
|
|
'ApproximateNumberOfMessages'
|
|
]
|
|
)
|
|
return self.queueLength
|
|
|
|
def _receiveSQSMessage(self, maxNumberOfMessages=10):
|
|
response = self.sqs.receive_message(
|
|
QueueUrl=self.queueURL,
|
|
MaxNumberOfMessages=maxNumberOfMessages,
|
|
)
|
|
return response
|
|
|
|
def _extractMessageFromSQS(self):
|
|
pass
|
|
|
|
def receiveMessage(
|
|
self,
|
|
b64=True,
|
|
MaxNumberOfMessages=10,
|
|
delete=False,
|
|
endString='END',
|
|
):
|
|
while True:
|
|
response = self.sqs.receive_message(
|
|
QueueUrl=self.queueURL,
|
|
MaxNumberOfMessages=MaxNumberOfMessages,
|
|
)
|
|
if 'Messages' in response:
|
|
for message in response['Messages']:
|
|
if b64:
|
|
decoded = base64.b64decode(
|
|
message['Body']
|
|
)
|
|
msg = decoded.decode()
|
|
print(msg)
|
|
if msg == endString:
|
|
return self
|
|
else:
|
|
msg = print(message['Body'])
|
|
if msg == endString:
|
|
return self
|
|
else:
|
|
print('Queue is empty')
|
|
break
|
|
|
|
def receiveAllMessages(self, b64=True, delete=False):
|
|
while True:
|
|
self.response = self._receiveSQSMessage()
|
|
|
|
|
|
inst = receiveFromSQS.createSession(
|
|
profileName='plex-aws',
|
|
queueURL='https://sqs.eu-west-1.amazonaws'
|
|
'.com/745437999005/slack-bot.fifo',
|
|
)
|
|
inst.getQueueLength()
|