diff --git a/queues/sqs/consumer.go b/queues/sqs/consumer.go
index 7c56f8ff9d6a8ef6a33c78d8a035f790b1eb2039..f41b504ba63f703a62b83011603fbd57b71aa3dc 100644
--- a/queues/sqs/consumer.go
+++ b/queues/sqs/consumer.go
@@ -80,6 +80,10 @@ func (consumer consumer) WithAuditor(auditor audit.Auditor) queues.Consumer {
 }
 
 func (consumer consumer) Run() {
+	//create producer so event handler can queue new events (e.g. retries...)
+	consumer.Debugf("Using SQS queue producer for async events ...")
+	consumer.Service = consumer.Service.WithProducer(NewProducer(consumer.requestIDHeaderKey))
+
 	lambda.Start(consumer.Handler)
 }
 
diff --git a/service/service.go b/service/service.go
index 92e45a245ab2b9dac1b34223eb5bda9117b1683b..6cdbe9e9c0d5fe945bbf82ee7d2405e64415e342 100644
--- a/service/service.go
+++ b/service/service.go
@@ -27,6 +27,7 @@ func New() Service {
 		env = "dev"
 	}
 	return service{
+		Producer:       nil,
 		Logger:         logger.New().WithFields(map[string]interface{}{"env": env}),
 		IErrorReporter: DoNotReportErrors{},
 		Auditor:        audit.None(),
@@ -78,6 +79,7 @@ func (s service) WithStarter(name string, starter IStarter) Service {
 func (s service) WithProducer(producer Producer) Service {
 	if producer != nil {
 		s.Producer = producer
+		s.Infof("Producer = (%T)%v", producer, producer)
 	}
 	return s
 }