Azure / azure-service-bus

☁️ Azure Service Bus service issue tracking and samples
https://azure.microsoft.com/services/service-bus
MIT License
580 stars 775 forks source link

Replayability of all messages(Failed/Successfully Processed) via Azure Service Bus #655

Closed rohit3d2003 closed 1 year ago

rohit3d2003 commented 1 year ago

Description

We are using Azure Service Bus for asynchronous message processing and one of the requirement is to be able to allow message replay/re-submission regardless of whether it was failed or processed successfully. Generally, poison messages are moved to dead letter queue and successfully messages are marked as 'complete' but I was wondering if someone ran into a similar situation and can provide guidance.

I have looked into 'Auto-forwarding', topic/subscriptions(primary & backup) but lack support of either queue to multiple queue auto-forwarding or moving message from one subscription to another subscription. Few pointers to consider

Google Cloud seems to offer a replaying and purging feature on Cloud pub/sub

Actual Behavior

  1. No guidance on replayability of messages

Expected Behavior

  1. Guidance on how replayability is supported
SeanFeldman commented 1 year ago

@rohit3d2003 this repo is to raise issues and feature requests for the broker/service. StackOverflow.com is much better suited for this type of questions.

rohit3d2003 commented 1 year ago

@SeanFeldman - Could this be a feature request to support message replay for all messages? Happy to close it here if you suggest otherwise

SeanFeldman commented 1 year ago

Could this be a feature request to support message replay for all messages

ASB does not replay messages. Period. There are too many business-specific nuances. The need to replay all messages stems from a very specific scenario you've got that is not something a general feature would be.

Google Cloud seems to offer a replaying and purging feature on Cloud pub/sub

GCP's Pub/Sub is different from ASB. Reading the article you're hinting at, it's important to read the details:

Pub/Sub cannot retrieve the messages after you have acknowledged them. However, sometimes you might find it necessary to replay the acknowledged messages, for example, if you performed an erroneous acknowledgment. Then you can use the Seek feature to mark previously acknowledged messages as unacknowledged, and force Pub/Sub to redeliver those messages. You can also use seek to delete the unacknowledged messages by changing their state to acknowledged.

This sounds like Event Hubs, where you can replay messages if you need to. So, perhaps, the "feature" you're asking for is already implemented with the service that is more suitable for it - Event Hubs.

EldertGrootenboer commented 1 year ago

As mentioned by @SeanFeldman, Service Bus does not do replay of messages, and there are no plans to implement this. Event Hubs might better suit your scenarios, or alternatively you can send the messages to something like blob storage and resubmit them from there as needed.