Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BufferedClient ¶
type BufferedClient struct { Config // contains filtered or unexported fields }
BufferedClient wraps aws-sdk-go-v2's sqs.Client to provide a async buffered client.
func NewBufferedClient ¶
func NewBufferedClient(config Config) (*BufferedClient, error)
NewBufferedClient creates and returns a new instance of BufferedClient. You will need one BufferedClient client per SQS queue. Stop() must be eventually called to free resources created by NewBufferedClient.
func (*BufferedClient) DeleteMessageAsync ¶
func (c *BufferedClient) DeleteMessageAsync(entries ...types.DeleteMessageBatchRequestEntry) error
DeleteMessageAsync schedules message(s) to be deleted. It blocks if the delete buffer is full.
func (*BufferedClient) SendMessageAsync ¶
func (c *BufferedClient) SendMessageAsync(entries ...types.SendMessageBatchRequestEntry) error
SendMessageAsync schedules message(s) to be sent. It blocks if the send buffer is full.
func (*BufferedClient) Stats ¶
func (c *BufferedClient) Stats() Stats
Stats returns client statistics.
func (*BufferedClient) Stop ¶
func (c *BufferedClient) Stop()
Stop stops all the batcher and dispatcher goroutines. It blocks until all pending requests in buffer are gracefully drained. Stop should be called only after calls to SendMessageAsync() and DeleteMessageAsync() have stopped.
type Config ¶
type Config struct { // SQSClient abstracts *sqs.Client from aws-sdk-go-v2. You can bring your // own fully initialised SQS client (with required credentials, options // etc). This is a required field. SQSClient SQSClient // QueueURL specifies AWS SQS Queue URL for a queue. // This is a required field. QueueURL string // SendWaitTime specifies a time limit for how long the client will // wait before it will dispatch accumulated send message requests // even if the batch isn't full. If not specified, send message // requests will be dispatched only when a batch is full. SendWaitTime time.Duration // SendBufferSize specifies a limit on the number of send message // requests that can be held in memory. If not specified, defaults // to 1000. SendBufferSize int // SendConcurrency limits the number of concurrent send message SQS // requests in progress. If not specified, defaults to SendBufferSize/10. SendConcurrency int // OnSendMessageBatch will be called with results returned by SQSClient // for a send message batch operation. If set, this callback function // needs to be goroutine safe. OnSendMessageBatch func(*sqs.SendMessageBatchOutput, error) // DeleteWaitTime specifies a time limit for how long the client will // wait before it will dispatch accumulated delete message requests // even if the batch isn't full. If not specified, delete message // requests will be dispatched only when a batch is full. DeleteWaitTime time.Duration // DeleteBufferSize specifies a limit on the number of delete message // requests that can be held in memory. If not specified, defaults // to 1000. DeleteBufferSize int // DeleteConcurrency limits the number of concurrent delete message SQS // requests in progress. If not specified, defaults to DeleteBufferSize/10. DeleteConcurrency int // OnDeleteMessageBatch will be called with results returned by SQSClient // for a delete message batch operation. If set, this callback function // needs to be goroutine safe. OnDeleteMessageBatch func(*sqs.DeleteMessageBatchOutput, error) }
Config is used to configure BufferedClient.
type SQSClient ¶
type SQSClient interface { SendMessageBatch(context.Context, *sqs.SendMessageBatchInput, ...func(*sqs.Options)) (*sqs.SendMessageBatchOutput, error) DeleteMessageBatch(context.Context, *sqs.DeleteMessageBatchInput, ...func(*sqs.Options)) (*sqs.DeleteMessageBatchOutput, error) }
SQSClient wraps *sqs.Client from aws-sdk-go-v2