diff --git a/aws/sqs/sqs.go b/aws/sqs/sqs.go index 404fe93..af3b07a 100644 --- a/aws/sqs/sqs.go +++ b/aws/sqs/sqs.go @@ -24,7 +24,8 @@ type Raw struct { } type SQS struct { - client *sqs.Client + client *sqs.Client + noMessageCallback func() //callback function to call when no message is reveived from the queue } // New returns an SQS struct which wraps an SQS client using the default AWS credentials chain. @@ -89,6 +90,11 @@ func (s *SQS) Ready() bool { return s.client != nil } +// Setter method for emptyMessageCallback +func (s *SQS) SetNoMessageCallback(callback func()) { + s.noMessageCallback = callback +} + // Receive receives a raw message or error from the queue. // After a successful receive the message will be in flight // until it is either deleted or the visibility timeout expires @@ -135,6 +141,9 @@ func (s *SQS) receiveMessage(ctx context.Context, input *sqs.ReceiveMessageInput switch { case r == nil || len(r.Messages) == 0: // no message received + if s.noMessageCallback != nil { + s.noMessageCallback() + } continue case len(r.Messages) == 1: raw := r.Messages[0]