use*_*268 4 amazon-sqs amazon-web-services
我在python中使用boto3客户端.我正在将消息推送到sqs但是以错误的顺序接收它们.我可以看出他们的发送时间是正确的.
队列创建如下:
boto_session = boto3.Session(region_name=..,aws_access_key_id=.., aws_secret_access_key=...)
sqs_client = boto_session.resource('sqs', endpoint_url=endpoint_url)
sqs_client.create_queue(QueueName=...)
Run Code Online (Sandbox Code Playgroud)
推送消息的代码:
boto_session = boto3.Session(region_name=..,aws_access_key_id=..,aws_secret_access_key=...)
sqs_client = boto_session.resource('sqs', endpoint_url=endpoint_url)
queue = sqs_client.get_queue_by_name(QueueName=stream_name)
i = 0
while i < 10:
print 'b ' + str(i)
queue.send_message(MessageBody=raw_data.push(json.dumps(dict(id=i)))
sleep(2)
i += 1
Run Code Online (Sandbox Code Playgroud)
和轮询消息的代码:
sqs_resource = boto_session.resource('sqs', endpoint_url=endpoint_url)
queue = sqs_resource.get_queue_by_name(QueueName=queue_name)
while True:
messages = queue.receive_messages(MaxNumberOfMessages=1,VisibilityTimeout=10,WaitTimeSeconds=5)
for m in messages:
print m.data
queue.delete_messages(
Entries=[
{
'Id': m.message_id,
'ReceiptHandle': m.receipt_handle
}
]
)
Run Code Online (Sandbox Code Playgroud)
我运行了创建队列代码,然后我推送了消息,然后运行了一个进程来使用消息,如图所示.
我清楚地看到消息是随机排序的.
在sqs中有解决方案吗?或者我应该更换队列?
| 归档时间: |
|
| 查看次数: |
2280 次 |
| 最近记录: |