Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support loading and retrying messages not sent by NServiceBus #4693

Open
SzymonPobiega opened this issue Dec 30, 2024 · 0 comments
Open

Support loading and retrying messages not sent by NServiceBus #4693

SzymonPobiega opened this issue Dec 30, 2024 · 0 comments

Comments

@SzymonPobiega
Copy link
Member

SzymonPobiega commented Dec 30, 2024

Describe the feature.

Is your feature related to a problem? Please describe.

In a large and complex system there are often also non-NServiceBus message processors. When a message fails processing in these processors (e.g. build directly with RabbitMQ or Azure Service Bus SDK), it is moved to broker-specific place where it is poorly discoverable.

Describe the requested feature

Extend ServiceControl to allow ingesting messages that were not generated by NServiceBus

Describe alternatives you've considered

The only alternative available is using broker-specific tool for queue management, such as QueueExplorer.

Additional Context

It seems to be best from the UX perspective to support multiple message wire-formats in a single instance of ServiceControl. In order for that to be possible without compromising the SC's architecture and the guarantee of exactly-once message retries, it seems necessary to add multiple separate ingestion/retry pathways:

  • Per-wire-format pumps that take messages off the queue and adopt the custom wire format to the common abstraction (MessageContext + failed queue name)
  • Common dispatcher that is used to stage retried messages in the common format
  • Common pump that processes the staging queue coupled with a list of per-wire-format dispatchers that ensure messages are sent to the retry queue in the correct wire format

Note: this design would not be able to support multiple different transports

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant