{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Amazonka.SQS.Types.SendMessageBatchRequestEntry -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) module Amazonka.SQS.Types.SendMessageBatchRequestEntry where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import qualified Amazonka.Prelude as Prelude import Amazonka.SQS.Types.MessageAttributeValue import Amazonka.SQS.Types.MessageSystemAttributeNameForSends import Amazonka.SQS.Types.MessageSystemAttributeValue -- | Contains the details of a single Amazon SQS message along with an @Id@. -- -- /See:/ 'newSendMessageBatchRequestEntry' smart constructor. data SendMessageBatchRequestEntry = SendMessageBatchRequestEntry' { -- | The length of time, in seconds, for which a specific message is delayed. -- Valid values: 0 to 900. Maximum: 15 minutes. Messages with a positive -- @DelaySeconds@ value become available for processing after the delay -- period is finished. If you don\'t specify a value, the default value for -- the queue is applied. -- -- When you set @FifoQueue@, you can\'t set @DelaySeconds@ per message. You -- can set this parameter only on a queue level. delaySeconds :: Prelude.Maybe Prelude.Int, -- | Each message attribute consists of a @Name@, @Type@, and @Value@. For -- more information, see -- -- in the /Amazon SQS Developer Guide/. messageAttributes :: Prelude.Maybe (Prelude.HashMap Prelude.Text MessageAttributeValue), -- | This parameter applies only to FIFO (first-in-first-out) queues. -- -- The token used for deduplication of messages within a 5-minute minimum -- deduplication interval. If a message with a particular -- @MessageDeduplicationId@ is sent successfully, subsequent messages with -- the same @MessageDeduplicationId@ are accepted successfully but aren\'t -- delivered. For more information, see -- -- in the /Amazon SQS Developer Guide/. -- -- - Every message must have a unique @MessageDeduplicationId@, -- -- - You may provide a @MessageDeduplicationId@ explicitly. -- -- - If you aren\'t able to provide a @MessageDeduplicationId@ and -- you enable @ContentBasedDeduplication@ for your queue, Amazon -- SQS uses a SHA-256 hash to generate the @MessageDeduplicationId@ -- using the body of the message (but not the attributes of the -- message). -- -- - If you don\'t provide a @MessageDeduplicationId@ and the queue -- doesn\'t have @ContentBasedDeduplication@ set, the action fails -- with an error. -- -- - If the queue has @ContentBasedDeduplication@ set, your -- @MessageDeduplicationId@ overrides the generated one. -- -- - When @ContentBasedDeduplication@ is in effect, messages with -- identical content sent within the deduplication interval are treated -- as duplicates and only one copy of the message is delivered. -- -- - If you send one message with @ContentBasedDeduplication@ enabled and -- then another message with a @MessageDeduplicationId@ that is the -- same as the one generated for the first @MessageDeduplicationId@, -- the two messages are treated as duplicates and only one copy of the -- message is delivered. -- -- The @MessageDeduplicationId@ is available to the consumer of the message -- (this can be useful for troubleshooting delivery issues). -- -- If a message is sent successfully but the acknowledgement is lost and -- the message is resent with the same @MessageDeduplicationId@ after the -- deduplication interval, Amazon SQS can\'t detect duplicate messages. -- -- Amazon SQS continues to keep track of the message deduplication ID even -- after the message is received and deleted. -- -- The length of @MessageDeduplicationId@ is 128 characters. -- @MessageDeduplicationId@ can contain alphanumeric characters (@a-z@, -- @A-Z@, @0-9@) and punctuation -- (@!\"#$%&\'()*+,-.\/:;\<=>?\@[\\]^_\`{|}~@). -- -- For best practices of using @MessageDeduplicationId@, see -- -- in the /Amazon SQS Developer Guide/. messageDeduplicationId :: Prelude.Maybe Prelude.Text, -- | This parameter applies only to FIFO (first-in-first-out) queues. -- -- The tag that specifies that a message belongs to a specific message -- group. Messages that belong to the same message group are processed in a -- FIFO manner (however, messages in different message groups might be -- processed out of order). To interleave multiple ordered streams within a -- single queue, use @MessageGroupId@ values (for example, session data for -- multiple users). In this scenario, multiple consumers can process the -- queue, but the session data of each user is processed in a FIFO fashion. -- -- - You must associate a non-empty @MessageGroupId@ with a message. If -- you don\'t provide a @MessageGroupId@, the action fails. -- -- - @ReceiveMessage@ might return messages with multiple -- @MessageGroupId@ values. For each @MessageGroupId@, the messages are -- sorted by time sent. The caller can\'t specify a @MessageGroupId@. -- -- The length of @MessageGroupId@ is 128 characters. Valid values: -- alphanumeric characters and punctuation -- @(!\"#$%&\'()*+,-.\/:;\<=>?\@[\\]^_\`{|}~)@. -- -- For best practices of using @MessageGroupId@, see -- -- in the /Amazon SQS Developer Guide/. -- -- @MessageGroupId@ is required for FIFO queues. You can\'t use it for -- Standard queues. messageGroupId :: Prelude.Maybe Prelude.Text, -- | The message system attribute to send Each message system attribute -- consists of a @Name@, @Type@, and @Value@. -- -- - Currently, the only supported message system attribute is -- @AWSTraceHeader@. Its type must be @String@ and its value must be a -- correctly formatted X-Ray trace header string. -- -- - The size of a message system attribute doesn\'t count towards the -- total size of a message. messageSystemAttributes :: Prelude.Maybe (Prelude.HashMap MessageSystemAttributeNameForSends MessageSystemAttributeValue), -- | An identifier for a message in this batch used to communicate the -- result. -- -- The @Id@s of a batch request need to be unique within a request. -- -- This identifier can have up to 80 characters. The following characters -- are accepted: alphanumeric characters, hyphens(-), and underscores (_). id :: Prelude.Text, -- | The body of the message. messageBody :: Prelude.Text } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'SendMessageBatchRequestEntry' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'delaySeconds', 'sendMessageBatchRequestEntry_delaySeconds' - The length of time, in seconds, for which a specific message is delayed. -- Valid values: 0 to 900. Maximum: 15 minutes. Messages with a positive -- @DelaySeconds@ value become available for processing after the delay -- period is finished. If you don\'t specify a value, the default value for -- the queue is applied. -- -- When you set @FifoQueue@, you can\'t set @DelaySeconds@ per message. You -- can set this parameter only on a queue level. -- -- 'messageAttributes', 'sendMessageBatchRequestEntry_messageAttributes' - Each message attribute consists of a @Name@, @Type@, and @Value@. For -- more information, see -- -- in the /Amazon SQS Developer Guide/. -- -- 'messageDeduplicationId', 'sendMessageBatchRequestEntry_messageDeduplicationId' - This parameter applies only to FIFO (first-in-first-out) queues. -- -- The token used for deduplication of messages within a 5-minute minimum -- deduplication interval. If a message with a particular -- @MessageDeduplicationId@ is sent successfully, subsequent messages with -- the same @MessageDeduplicationId@ are accepted successfully but aren\'t -- delivered. For more information, see -- -- in the /Amazon SQS Developer Guide/. -- -- - Every message must have a unique @MessageDeduplicationId@, -- -- - You may provide a @MessageDeduplicationId@ explicitly. -- -- - If you aren\'t able to provide a @MessageDeduplicationId@ and -- you enable @ContentBasedDeduplication@ for your queue, Amazon -- SQS uses a SHA-256 hash to generate the @MessageDeduplicationId@ -- using the body of the message (but not the attributes of the -- message). -- -- - If you don\'t provide a @MessageDeduplicationId@ and the queue -- doesn\'t have @ContentBasedDeduplication@ set, the action fails -- with an error. -- -- - If the queue has @ContentBasedDeduplication@ set, your -- @MessageDeduplicationId@ overrides the generated one. -- -- - When @ContentBasedDeduplication@ is in effect, messages with -- identical content sent within the deduplication interval are treated -- as duplicates and only one copy of the message is delivered. -- -- - If you send one message with @ContentBasedDeduplication@ enabled and -- then another message with a @MessageDeduplicationId@ that is the -- same as the one generated for the first @MessageDeduplicationId@, -- the two messages are treated as duplicates and only one copy of the -- message is delivered. -- -- The @MessageDeduplicationId@ is available to the consumer of the message -- (this can be useful for troubleshooting delivery issues). -- -- If a message is sent successfully but the acknowledgement is lost and -- the message is resent with the same @MessageDeduplicationId@ after the -- deduplication interval, Amazon SQS can\'t detect duplicate messages. -- -- Amazon SQS continues to keep track of the message deduplication ID even -- after the message is received and deleted. -- -- The length of @MessageDeduplicationId@ is 128 characters. -- @MessageDeduplicationId@ can contain alphanumeric characters (@a-z@, -- @A-Z@, @0-9@) and punctuation -- (@!\"#$%&\'()*+,-.\/:;\<=>?\@[\\]^_\`{|}~@). -- -- For best practices of using @MessageDeduplicationId@, see -- -- in the /Amazon SQS Developer Guide/. -- -- 'messageGroupId', 'sendMessageBatchRequestEntry_messageGroupId' - This parameter applies only to FIFO (first-in-first-out) queues. -- -- The tag that specifies that a message belongs to a specific message -- group. Messages that belong to the same message group are processed in a -- FIFO manner (however, messages in different message groups might be -- processed out of order). To interleave multiple ordered streams within a -- single queue, use @MessageGroupId@ values (for example, session data for -- multiple users). In this scenario, multiple consumers can process the -- queue, but the session data of each user is processed in a FIFO fashion. -- -- - You must associate a non-empty @MessageGroupId@ with a message. If -- you don\'t provide a @MessageGroupId@, the action fails. -- -- - @ReceiveMessage@ might return messages with multiple -- @MessageGroupId@ values. For each @MessageGroupId@, the messages are -- sorted by time sent. The caller can\'t specify a @MessageGroupId@. -- -- The length of @MessageGroupId@ is 128 characters. Valid values: -- alphanumeric characters and punctuation -- @(!\"#$%&\'()*+,-.\/:;\<=>?\@[\\]^_\`{|}~)@. -- -- For best practices of using @MessageGroupId@, see -- -- in the /Amazon SQS Developer Guide/. -- -- @MessageGroupId@ is required for FIFO queues. You can\'t use it for -- Standard queues. -- -- 'messageSystemAttributes', 'sendMessageBatchRequestEntry_messageSystemAttributes' - The message system attribute to send Each message system attribute -- consists of a @Name@, @Type@, and @Value@. -- -- - Currently, the only supported message system attribute is -- @AWSTraceHeader@. Its type must be @String@ and its value must be a -- correctly formatted X-Ray trace header string. -- -- - The size of a message system attribute doesn\'t count towards the -- total size of a message. -- -- 'id', 'sendMessageBatchRequestEntry_id' - An identifier for a message in this batch used to communicate the -- result. -- -- The @Id@s of a batch request need to be unique within a request. -- -- This identifier can have up to 80 characters. The following characters -- are accepted: alphanumeric characters, hyphens(-), and underscores (_). -- -- 'messageBody', 'sendMessageBatchRequestEntry_messageBody' - The body of the message. newSendMessageBatchRequestEntry :: -- | 'id' Prelude.Text -> -- | 'messageBody' Prelude.Text -> SendMessageBatchRequestEntry newSendMessageBatchRequestEntry pId_ pMessageBody_ = SendMessageBatchRequestEntry' { delaySeconds = Prelude.Nothing, messageAttributes = Prelude.Nothing, messageDeduplicationId = Prelude.Nothing, messageGroupId = Prelude.Nothing, messageSystemAttributes = Prelude.Nothing, id = pId_, messageBody = pMessageBody_ } -- | The length of time, in seconds, for which a specific message is delayed. -- Valid values: 0 to 900. Maximum: 15 minutes. Messages with a positive -- @DelaySeconds@ value become available for processing after the delay -- period is finished. If you don\'t specify a value, the default value for -- the queue is applied. -- -- When you set @FifoQueue@, you can\'t set @DelaySeconds@ per message. You -- can set this parameter only on a queue level. sendMessageBatchRequestEntry_delaySeconds :: Lens.Lens' SendMessageBatchRequestEntry (Prelude.Maybe Prelude.Int) sendMessageBatchRequestEntry_delaySeconds = Lens.lens (\SendMessageBatchRequestEntry' {delaySeconds} -> delaySeconds) (\s@SendMessageBatchRequestEntry' {} a -> s {delaySeconds = a} :: SendMessageBatchRequestEntry) -- | Each message attribute consists of a @Name@, @Type@, and @Value@. For -- more information, see -- -- in the /Amazon SQS Developer Guide/. sendMessageBatchRequestEntry_messageAttributes :: Lens.Lens' SendMessageBatchRequestEntry (Prelude.Maybe (Prelude.HashMap Prelude.Text MessageAttributeValue)) sendMessageBatchRequestEntry_messageAttributes = Lens.lens (\SendMessageBatchRequestEntry' {messageAttributes} -> messageAttributes) (\s@SendMessageBatchRequestEntry' {} a -> s {messageAttributes = a} :: SendMessageBatchRequestEntry) Prelude.. Lens.mapping Lens.coerced -- | This parameter applies only to FIFO (first-in-first-out) queues. -- -- The token used for deduplication of messages within a 5-minute minimum -- deduplication interval. If a message with a particular -- @MessageDeduplicationId@ is sent successfully, subsequent messages with -- the same @MessageDeduplicationId@ are accepted successfully but aren\'t -- delivered. For more information, see -- -- in the /Amazon SQS Developer Guide/. -- -- - Every message must have a unique @MessageDeduplicationId@, -- -- - You may provide a @MessageDeduplicationId@ explicitly. -- -- - If you aren\'t able to provide a @MessageDeduplicationId@ and -- you enable @ContentBasedDeduplication@ for your queue, Amazon -- SQS uses a SHA-256 hash to generate the @MessageDeduplicationId@ -- using the body of the message (but not the attributes of the -- message). -- -- - If you don\'t provide a @MessageDeduplicationId@ and the queue -- doesn\'t have @ContentBasedDeduplication@ set, the action fails -- with an error. -- -- - If the queue has @ContentBasedDeduplication@ set, your -- @MessageDeduplicationId@ overrides the generated one. -- -- - When @ContentBasedDeduplication@ is in effect, messages with -- identical content sent within the deduplication interval are treated -- as duplicates and only one copy of the message is delivered. -- -- - If you send one message with @ContentBasedDeduplication@ enabled and -- then another message with a @MessageDeduplicationId@ that is the -- same as the one generated for the first @MessageDeduplicationId@, -- the two messages are treated as duplicates and only one copy of the -- message is delivered. -- -- The @MessageDeduplicationId@ is available to the consumer of the message -- (this can be useful for troubleshooting delivery issues). -- -- If a message is sent successfully but the acknowledgement is lost and -- the message is resent with the same @MessageDeduplicationId@ after the -- deduplication interval, Amazon SQS can\'t detect duplicate messages. -- -- Amazon SQS continues to keep track of the message deduplication ID even -- after the message is received and deleted. -- -- The length of @MessageDeduplicationId@ is 128 characters. -- @MessageDeduplicationId@ can contain alphanumeric characters (@a-z@, -- @A-Z@, @0-9@) and punctuation -- (@!\"#$%&\'()*+,-.\/:;\<=>?\@[\\]^_\`{|}~@). -- -- For best practices of using @MessageDeduplicationId@, see -- -- in the /Amazon SQS Developer Guide/. sendMessageBatchRequestEntry_messageDeduplicationId :: Lens.Lens' SendMessageBatchRequestEntry (Prelude.Maybe Prelude.Text) sendMessageBatchRequestEntry_messageDeduplicationId = Lens.lens (\SendMessageBatchRequestEntry' {messageDeduplicationId} -> messageDeduplicationId) (\s@SendMessageBatchRequestEntry' {} a -> s {messageDeduplicationId = a} :: SendMessageBatchRequestEntry) -- | This parameter applies only to FIFO (first-in-first-out) queues. -- -- The tag that specifies that a message belongs to a specific message -- group. Messages that belong to the same message group are processed in a -- FIFO manner (however, messages in different message groups might be -- processed out of order). To interleave multiple ordered streams within a -- single queue, use @MessageGroupId@ values (for example, session data for -- multiple users). In this scenario, multiple consumers can process the -- queue, but the session data of each user is processed in a FIFO fashion. -- -- - You must associate a non-empty @MessageGroupId@ with a message. If -- you don\'t provide a @MessageGroupId@, the action fails. -- -- - @ReceiveMessage@ might return messages with multiple -- @MessageGroupId@ values. For each @MessageGroupId@, the messages are -- sorted by time sent. The caller can\'t specify a @MessageGroupId@. -- -- The length of @MessageGroupId@ is 128 characters. Valid values: -- alphanumeric characters and punctuation -- @(!\"#$%&\'()*+,-.\/:;\<=>?\@[\\]^_\`{|}~)@. -- -- For best practices of using @MessageGroupId@, see -- -- in the /Amazon SQS Developer Guide/. -- -- @MessageGroupId@ is required for FIFO queues. You can\'t use it for -- Standard queues. sendMessageBatchRequestEntry_messageGroupId :: Lens.Lens' SendMessageBatchRequestEntry (Prelude.Maybe Prelude.Text) sendMessageBatchRequestEntry_messageGroupId = Lens.lens (\SendMessageBatchRequestEntry' {messageGroupId} -> messageGroupId) (\s@SendMessageBatchRequestEntry' {} a -> s {messageGroupId = a} :: SendMessageBatchRequestEntry) -- | The message system attribute to send Each message system attribute -- consists of a @Name@, @Type@, and @Value@. -- -- - Currently, the only supported message system attribute is -- @AWSTraceHeader@. Its type must be @String@ and its value must be a -- correctly formatted X-Ray trace header string. -- -- - The size of a message system attribute doesn\'t count towards the -- total size of a message. sendMessageBatchRequestEntry_messageSystemAttributes :: Lens.Lens' SendMessageBatchRequestEntry (Prelude.Maybe (Prelude.HashMap MessageSystemAttributeNameForSends MessageSystemAttributeValue)) sendMessageBatchRequestEntry_messageSystemAttributes = Lens.lens (\SendMessageBatchRequestEntry' {messageSystemAttributes} -> messageSystemAttributes) (\s@SendMessageBatchRequestEntry' {} a -> s {messageSystemAttributes = a} :: SendMessageBatchRequestEntry) Prelude.. Lens.mapping Lens.coerced -- | An identifier for a message in this batch used to communicate the -- result. -- -- The @Id@s of a batch request need to be unique within a request. -- -- This identifier can have up to 80 characters. The following characters -- are accepted: alphanumeric characters, hyphens(-), and underscores (_). sendMessageBatchRequestEntry_id :: Lens.Lens' SendMessageBatchRequestEntry Prelude.Text sendMessageBatchRequestEntry_id = Lens.lens (\SendMessageBatchRequestEntry' {id} -> id) (\s@SendMessageBatchRequestEntry' {} a -> s {id = a} :: SendMessageBatchRequestEntry) -- | The body of the message. sendMessageBatchRequestEntry_messageBody :: Lens.Lens' SendMessageBatchRequestEntry Prelude.Text sendMessageBatchRequestEntry_messageBody = Lens.lens (\SendMessageBatchRequestEntry' {messageBody} -> messageBody) (\s@SendMessageBatchRequestEntry' {} a -> s {messageBody = a} :: SendMessageBatchRequestEntry) instance Prelude.Hashable SendMessageBatchRequestEntry where hashWithSalt _salt SendMessageBatchRequestEntry' {..} = _salt `Prelude.hashWithSalt` delaySeconds `Prelude.hashWithSalt` messageAttributes `Prelude.hashWithSalt` messageDeduplicationId `Prelude.hashWithSalt` messageGroupId `Prelude.hashWithSalt` messageSystemAttributes `Prelude.hashWithSalt` id `Prelude.hashWithSalt` messageBody instance Prelude.NFData SendMessageBatchRequestEntry where rnf SendMessageBatchRequestEntry' {..} = Prelude.rnf delaySeconds `Prelude.seq` Prelude.rnf messageAttributes `Prelude.seq` Prelude.rnf messageDeduplicationId `Prelude.seq` Prelude.rnf messageGroupId `Prelude.seq` Prelude.rnf messageSystemAttributes `Prelude.seq` Prelude.rnf id `Prelude.seq` Prelude.rnf messageBody instance Data.ToQuery SendMessageBatchRequestEntry where toQuery SendMessageBatchRequestEntry' {..} = Prelude.mconcat [ "DelaySeconds" Data.=: delaySeconds, Data.toQuery ( Data.toQueryMap "MessageAttribute" "Name" "Value" Prelude.<$> messageAttributes ), "MessageDeduplicationId" Data.=: messageDeduplicationId, "MessageGroupId" Data.=: messageGroupId, Data.toQuery ( Data.toQueryMap "MessageSystemAttribute" "Name" "Value" Prelude.<$> messageSystemAttributes ), "Id" Data.=: id, "MessageBody" Data.=: messageBody ]