Eine lokale Alternative zu Amazon SQS.
Die Methode mit connect_to_region
von boto
kommt oft vor,
Wenn es sich um ein lokales ElasticMQ handelt, müssen Sie eine Verbindung mit regioninfo.SQSRegionInfo
herstellen. Notieren Sie sich dies.
Es scheint, dass das Setzen von "is_secure" auf "True" zu "https" führt.
ElasticMQ wird gelöscht und gestartet. Standardmäßig ist der Port "9324".
$ java -jar ~/opt/elasticmq-server-0.8.8.jar
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from boto.sqs import regioninfo
from boto.sqs.message import Message
AWS_ACCESS_KEY = 'TEST' #Jeder EMQ ist in Ordnung
AWS_SECRET_KEY = 'TEST' #Jeder EMQ ist in Ordnung
SQS_REGION = "emq" #Jeder EMQ ist in Ordnung
SQS_ENDPOINT = "localhost"
#Für AWS
# SQS_REGION = "ap-northeast-1"
# SQS_ENDPOINT = "sqs.ap-northeast-1.amazonaws.com"
SQS_QUEUE_NAME = 'dev_messages'
PORT = 9324 #80 für AWS/Oder nicht angeben
region = regioninfo.SQSRegionInfo(name=SQS_REGION, endpoint=SQS_ENDPOINT)
conn = region.connect(
aws_access_key_id=AWS_ACCESS_KEY,
aws_secret_access_key=AWS_SECRET_KEY,
port=PORT,
is_secure=False
);
queue = conn.create_queue(SQS_QUEUE_NAME)
msg = Message(
body='QUEUE TEST',
)
msg.message_attributes = {
"name1": {
"data_type": "String",
"string_value": "I am a string"
},
}
queue.write(msg)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from boto.sqs import regioninfo
from boto.sqs.message import Message
AWS_ACCESS_KEY = 'TEST' #Jeder EMQ ist in Ordnung
AWS_SECRET_KEY = 'TEST' #Jeder EMQ ist in Ordnung
SQS_REGION = "emq" #Jeder EMQ ist in Ordnung
SQS_ENDPOINT = "localhost"
#Für AWS
# SQS_REGION = "ap-northeast-1"
# SQS_ENDPOINT = "sqs.ap-northeast-1.amazonaws.com"
SQS_QUEUE_NAME = 'dev_messages'
PORT = 9324 #80 für AWS/Oder nicht angeben
region = regioninfo.SQSRegionInfo(name=SQS_REGION, endpoint=SQS_ENDPOINT)
conn = region.connect(
aws_access_key_id=AWS_ACCESS_KEY,
aws_secret_access_key=AWS_SECRET_KEY,
port=PORT,
is_secure=False
);
queue = conn.get_queue(SQS_QUEUE_NAME)
queue.set_attribute('ReceiveMessageWaitTimeSeconds', 20)
import json
msgs = queue.get_messages(10)
for msg in msgs:
print json.dumps(msg.__dict__, default=str)
queue.delete_message(msg)
Recommended Posts