gpt4 book ai didi

Python boto3 和 SQS 不接收消息

转载 作者:行者123 更新时间:2023-12-02 02:42:08 26 4
gpt4 key购买 nike

我正在尝试使用Python中的Amazon SQS来实现发送和接收消息我所做的任何事情都不会使我的代码的接收端检索我发送的消息,我做错了什么?

发送.py:

SESSIONS_ACCESS_KEY = "************" 
SESSIONS_SECRET_KEY = "************"
sess = boto3.session.Session(aws_access_key_id=SESSIONS_ACCESS_KEY, aws_secret_access_key=SESSIONS_SECRET_KEY, region_name='eu-central-1')
sqs = sess.resource("sqs")
queue = sqs.get_queue_by_name(QueueName='myTestQueue.fifo')
response = queue.send_message(
MessageBody="TEST 123",
MessageGroupId='messageGroup1'
)

print(response.get('MessageId'))
print(response.get('MD5OfMessageBody'))

rec.py:

import time
import boto3

SESSIONS_ACCESS_KEY = "************"
SESSIONS_SECRET_KEY = "************"
sess = boto3.session.Session(aws_access_key_id=SESSIONS_ACCESS_KEY, aws_secret_access_key=SESSIONS_SECRET_KEY, region_name='eu-central-1')
sqs = sess.resource("sqs")

queue = sqs.get_queue_by_name(QueueName='myTestQueue.fifo')

# Process messages by printing out body
while True:
messages = queue.receive_messages()
print('Amount of existing Queue messages',len(messages))
for message in messages:
print('msg:',message.body)
message.delete()
time.sleep(5)

运行 send.py python 文件时,我得到以下信息:

1451fdb5-0f95-45d6-b1c1-76d9092fb49a
911e12e2292eb0914f39540ae513721c

但是rec.py python文件我在队列通知中不断收到0条消息:

Amount of existing Queue messages 0
Amount of existing Queue messages 0
Amount of existing Queue messages 0
Amount of existing Queue messages 0

我做错了什么?我也应该在接收端设置 MessageGroupId 吗?我应该使用其他命令来发送或接收消息吗?

最佳答案

当我运行您的 send.py 代码时,我收到一条错误消息:

botocore.exceptions.ClientError: An error occurred (InvalidParameterValue) when calling the SendMessage operation: The queue should either have ContentBasedDeduplication enabled or MessageDeduplicationId provided explicitly

这是 FIFO 队列的一项功能,可避免重复消息。我不确定您在队列上配置了什么,因此我激活了 ContentBasedDeduplication,然后收到了一条与您显示的类似的日志消息。

然后我能够重现您未收到消息的情况。

但是,鉴于已启用 ContentBasedDeduplication,我随后修改了 send.py:

response = queue.send_message(
MessageBody="TEST 123"+ str(random.random()),
MessageGroupId='messageGroup1'
)

使用此代码发送消息时,rec.py成功接收该消息。

底线: FIFO 队列正在过滤重复的消息,这可能就是您配置它的方式。

关于Python boto3 和 SQS 不接收消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63397389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com