发送消息属性 - Amazon Simple Queue Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

发送消息属性

您可以 使用消息属性在消息中包括结构化的元数据 (例如时间戳、地理空间数据、签名和标识符)。。有关更多信息,请参阅 Amazon SQS 消息属性。)

定义属性

要为消息定义属性,请添加使用 MessageAttributeValue 数据类型的以下代码。有关更多信息,请参阅 消息属性组件消息属性数据类型

的 AWS SDK for Java 自动计算消息正文和消息属性校验和,并将其与 Amazon SQS 返回。有关更多信息,请参阅 适用于 Java 的 AWS 开发工具包 2.x 开发人员指南 和适用于其他编程语言的计算消息属性的 MD5 消息摘要

String

此示例定义 String 属性,其名称为 Name,值为 Jane

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); messageAttributes.put("Name", new MessageAttributeValue() .withDataType("String") .withStringValue("Jane"));
Number

此示例定义 Number 属性,其名称为 AccurateWeight,值为 230.000000000000000001

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); messageAttributes.put("AccurateWeight", new MessageAttributeValue() .withDataType("Number") .withStringValue("230.000000000000000001"));
Binary

此示例定义 Binary 属性,其名称为 ByteArray,值为未初始化的 10 字节数组。

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); messageAttributes.put("ByteArray", new MessageAttributeValue() .withDataType("Binary") .withBinaryValue(ByteBuffer.wrap(new byte[10])));
String (custom)

此示例定义自定义属性 String.EmployeeId,其名称为 EmployeeId,值为 ABC123456

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); messageAttributes.put("EmployeeId", new MessageAttributeValue() .withDataType("String.EmployeeId") .withStringValue("ABC123456"));
Number (custom)

此示例定义自定义属性 Number.AccountId,其名称为 AccountId,值为 000123456

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); messageAttributes.put("AccountId", new MessageAttributeValue() .withDataType("Number.AccountId") .withStringValue("000123456"));
注意

因为基础数据类型是 Number, ReceiveMessage 方法返回 123456.

Binary (custom)

此示例定义自定义属性 Binary.JPEG,其名称为 ApplicationIcon,值为未初始化的 10 字节数组。

final Map<String, MessageAttributeValue> messageAttributes = new HashMap<>(); messageAttributes.put("ApplicationIcon", new MessageAttributeValue() .withDataType("Binary.JPEG") .withBinaryValue(ByteBuffer.wrap(new byte[10])));

发送带有属性的消息

此示例将实体添加到 SendMessageRequest 在发送消息之前。

// Send a message with an attribute. final SendMessageRequest sendMessageRequest = new SendMessageRequest(); sendMessageRequest.withMessageBody("This is my message text."); sendMessageRequest.withQueueUrl(myQueueUrl); sendMessageRequest.withMessageAttributes(messageAttributes); sqs.sendMessage(sendMessageRequest);
重要

如果您向先进先出(FIFO)队列发送消息,请确保 sendMessage 方法执行 之后 您提供消息组ID。

如果您使用 SendMessageBatch 方法,而不是 SendMessage,您必须为批处理中的每个消息指定消息属性。