Ответ от AWS SQS Java SDK не соответствует Python SDK или CLIPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ответ от AWS SQS Java SDK не соответствует Python SDK или CLI

Сообщение Anonymous »

Мы используем Java для отправки/получения сообщений из SNS/SQS. Когда мы публикуем сообщение, мы делаем следующее:

Код: Выделить всё

final var req = PublishRequest.builder()
.topicArn(topicArn)
.message(payload)
.subject(subject)
.build();
final var response = snsClient.publish(req);
Обратите внимание, что здесь мы задаем тему — это важно, поскольку мы используем ее для управления логикой на принимающей стороне. Когда мы получаем сообщения, мы анализируем JSON в объект и правильно получаем тему. Однако теперь мы также используем Python SDK для получения сообщений, и в этом случае атрибут «subject» не отправляется обратно из вызова API:

Код: Выделить всё

queue_name = "..."
sqs = boto3.resource("sqs")
queue = sqs.get_queue_by_name(QueueName=queue_name)
messages = queue.receive_messages(
MaxNumberOfMessages=1,
WaitTimeSeconds=10,
AttributeNames=["All"],
MessageAttributeNames=["All"],
)

for message in messages:
print("Got message:")
print(f"Queue URL: {message.queue_url}")

if message.attributes != None:
print(f"Attributes:\n{json.dumps(message.attributes, indent=2)}")

if message.message_attributes != None:
print(f"Message Attributes:\n{json.dumps(message.message_attributes, indent=2)}")

print(f"Body:\n{json.dumps(json.loads(message.body), indent=2)}")
Результаты:

Код: Выделить всё

Got message:
Queue URL: https://...
Attributes:
{
"SenderId": "...",
"ApproximateFirstReceiveTimestamp": "1737570929119",
"ApproximateReceiveCount": "5",
"SentTimestamp": "1737535740136"
}
Body:
{
...
}
Обратите внимание, что атрибут «тема» верхнего уровня отсутствует, а https://boto3.amazonaws.com/v1/document ... vices/sqs/ Queue/receive_messages.html вообще не упоминает «тему».

Я что-то упускаю или выходные данные двух SDK просто не совпадают такой же? Обратите внимание, что я также пробовал использовать клиент SQS (а не «ресурс») в Python. Как я могу заставить Python SDK включать «тему»?
Я также настроил подписку по электронной почте, и тема отображается в теме электронного письма, а также в теле JSON сообщения. электронная почта как отдельное свойство.
Java AWS SDK: 2.29.29
Python: 3.10.2
Питон AWS SDK: 1.33.13

Подробнее здесь: https://stackoverflow.com/questions/793 ... sdk-or-cli
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»