From 4cc4b425994c74f380067b50adc0953a1a706910 Mon Sep 17 00:00:00 2001 From: Karen Chen Date: Thu, 4 Jun 2026 18:06:03 -0700 Subject: [PATCH 1/2] Deprecate MultiProcessor API --- README.md | 5 ++--- v2/processor.go | 11 +++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4a2dc1f6..61100603 100644 --- a/README.md +++ b/README.md @@ -38,9 +38,8 @@ type ProcessorOptions struct { ### MultiProcessor -`NewMultiProcessor` takes in a list of receivers and a message handler. It creates a processor for each receiver and starts them concurrently. - -see [Processor and MultiProcessor examples](v2/processor_test.go) +Deprecated: `NewMultiProcessor`, `ReceiverEx`, and `NewReceiverEx` are deprecated and will be removed in a future major version. +Use `NewProcessor` with one receiver per processor instead. ## Middlewares: GoSHuttle provides a few middleware to simplify the implementation of the message handler in the application code diff --git a/v2/processor.go b/v2/processor.go index 59276852..53924e94 100644 --- a/v2/processor.go +++ b/v2/processor.go @@ -26,11 +26,19 @@ type MessageSettler interface { RenewMessageLock(ctx context.Context, message *azservicebus.ReceivedMessage, options *azservicebus.RenewMessageLockOptions) error } +// ReceiverEx names a Service Bus receiver for NewMultiProcessor. +// +// Deprecated: NewMultiProcessor is deprecated and will be removed in a future major version. +// Use NewProcessor with one receiver per Processor instead. type ReceiverEx struct { // shuttle.Receiver is already an exported interface name string sbReceiver Receiver } +// NewReceiverEx creates a named receiver for NewMultiProcessor. +// +// Deprecated: NewMultiProcessor is deprecated and will be removed in a future major version. +// Use NewProcessor with one receiver per Processor instead. func NewReceiverEx(name string, sbReceiver Receiver) *ReceiverEx { return &ReceiverEx{ name: name, @@ -124,6 +132,9 @@ func NewProcessor(receiver Receiver, handler HandlerFunc, options *ProcessorOpti } // NewMultiProcessor creates a new processor with a list of receivers and a handler. +// +// Deprecated: NewMultiProcessor is deprecated and will be removed in a future major version. +// Use NewProcessor with one receiver per Processor instead. func NewMultiProcessor(receiversEx []*ReceiverEx, handler HandlerFunc, options *ProcessorOptions) *Processor { opts := applyProcessorOptions(options) var receivers = make(map[string]*ReceiverEx) From 82c8685b17d36bb4647a1bc2fa8fea9e5d525cfa Mon Sep 17 00:00:00 2001 From: Karen Chen Date: Thu, 4 Jun 2026 18:09:07 -0700 Subject: [PATCH 2/2] Clarify MultiProcessor deprecation wording --- README.md | 2 +- v2/processor.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 61100603..c46f9792 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ type ProcessorOptions struct { ### MultiProcessor -Deprecated: `NewMultiProcessor`, `ReceiverEx`, and `NewReceiverEx` are deprecated and will be removed in a future major version. +Deprecated: `NewMultiProcessor`, `ReceiverEx`, and `NewReceiverEx` are deprecated and will be removed in a future version. Use `NewProcessor` with one receiver per processor instead. ## Middlewares: diff --git a/v2/processor.go b/v2/processor.go index 53924e94..1added6b 100644 --- a/v2/processor.go +++ b/v2/processor.go @@ -28,7 +28,7 @@ type MessageSettler interface { // ReceiverEx names a Service Bus receiver for NewMultiProcessor. // -// Deprecated: NewMultiProcessor is deprecated and will be removed in a future major version. +// Deprecated: NewMultiProcessor is deprecated and will be removed in a future version. // Use NewProcessor with one receiver per Processor instead. type ReceiverEx struct { // shuttle.Receiver is already an exported interface name string @@ -37,7 +37,7 @@ type ReceiverEx struct { // shuttle.Receiver is already an exported interface // NewReceiverEx creates a named receiver for NewMultiProcessor. // -// Deprecated: NewMultiProcessor is deprecated and will be removed in a future major version. +// Deprecated: NewMultiProcessor is deprecated and will be removed in a future version. // Use NewProcessor with one receiver per Processor instead. func NewReceiverEx(name string, sbReceiver Receiver) *ReceiverEx { return &ReceiverEx{ @@ -133,7 +133,7 @@ func NewProcessor(receiver Receiver, handler HandlerFunc, options *ProcessorOpti // NewMultiProcessor creates a new processor with a list of receivers and a handler. // -// Deprecated: NewMultiProcessor is deprecated and will be removed in a future major version. +// Deprecated: NewMultiProcessor is deprecated and will be removed in a future version. // Use NewProcessor with one receiver per Processor instead. func NewMultiProcessor(receiversEx []*ReceiverEx, handler HandlerFunc, options *ProcessorOptions) *Processor { opts := applyProcessorOptions(options)