{"action":"created","issue":{"url":"https://api.github.com/repos/Particular/NServiceBus.AzureServiceBus/issues/11","labels_url":"https://api.github.com/repos/Particular/NServiceBus.AzureServiceBus/issues/11/labels{/name}","comments_url":"https://api.github.com/repos/Particular/NServiceBus.AzureServiceBus/issues/11/comments","events_url":"https://api.github.com/repos/Particular/NServiceBus.AzureServiceBus/issues/11/events","html_url":"https://github.com/Particular/NServiceBus.AzureServiceBus/issues/11","id":55613215,"number":11,"title":"Native Support for FLR / SLR","user":{"login":"particularbot","id":6763890,"avatar_url":"https://avatars.githubusercontent.com/u/6763890?v=3","gravatar_id":"","url":"https://api.github.com/users/particularbot","html_url":"https://github.com/particularbot","followers_url":"https://api.github.com/users/particularbot/followers","following_url":"https://api.github.com/users/particularbot/following{/other_user}","gists_url":"https://api.github.com/users/particularbot/gists{/gist_id}","starred_url":"https://api.github.com/users/particularbot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/particularbot/subscriptions","organizations_url":"https://api.github.com/users/particularbot/orgs","repos_url":"https://api.github.com/users/particularbot/repos","events_url":"https://api.github.com/users/particularbot/events{/privacy}","received_events_url":"https://api.github.com/users/particularbot/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/Particular/NServiceBus.AzureServiceBus/labels/Type:%20Feature","name":"Type: Feature","color":"02e10c"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":9,"created_at":"2015-01-27T12:44:51Z","updated_at":"2016-01-11T12:35:18Z","closed_at":null,"body":"<a href=\"https://github.com/abombss\"><img src=\"https://avatars.githubusercontent.com/u/9210?v=3\" align=\"left\" width=\"96\" height=\"96\" hspace=\"10\"></img></a> **Issue by [abombss](https://github.com/abombss)**\r\n_10/18/2014 8:02:26 PM +00:00_\r\n\r\n_Originally opened as https://github.com/Particular/NServiceBus.Azure/issues/192_\r\n\r\n----\r\n\r\nRelated to: particular/NServiceBus#1929\r\n\r\n* Use the native deadlettering capabilities for handling poison messages\r\n\r\n* Use DeadLetter forwarding to forward poison messages to the configured \"Error\" queue\r\n\\[Edit by @SeanFeldman]:\r\n    ~~http://msdn.microsoft.com/en-us/library/azure/dn790528.aspx~~\r\n   https://msdn.microsoft.com/en-us/library/hh291941.aspx\r\n\r\n* Use the ability to mutate message headers (properties) to set custom headers for retries including exception, machine, stack, etc\r\n    http://msdn.microsoft.com/en-us/library/azure/jj673129.aspx\r\n\r\n* Use Scheduled Messages & Defer to handle SLR\r\n    When SLR kicks in use the Defer operation and then send a new message with the sequence number of the deferred message and set the ScheduledEnqueueTimeUtc to the SLR wait time.  When the scheduled message arrives, receive the deferred message and process.  If processing fails again, abandon the deferred message, completed the SLR message, and send a new scheduled message with the new scheduled delivery time.  Since all of this happening on the same Messaging Entity I am assuming it can all be wrapped in a transaction so all the things work or none work.\r\n\r\n    This SO post has a response from Clemens on the process http://stackoverflow.com/questions/16289605/whats-the-proper-way-to-abandon-an-azure-sb-message-so-that-it-becomes-visible\r\nThe should eliminate the need for an extra Retries queue and Timeout queue\r\n\r\n* Force a poison message without requiring FLR / SLR.  Certain messages come in that we know are poison after the first exception, there should be a method to automatically forwarded to the error queue, or in the case of Azure calling message.DeadLetter(properties); and also be able to set some headers for diagnostics.\r\n\r\n* Bus.Defer should use a similar pattern as SLR so again its native usage of the broker without requiring extra message queues like Retries & Timeouts\r\n\r\n* Bus.Defer should allow for message headers to be mutated or added to indicate \"why\" its being deferred or rescheduled.\r\n\r\nThese features would require that a subscription in azure is using a Standard Tier and not the Basic Tier.  It would also require that Queue and / or Subscription handling the messages has the MaxDeliveryCount set according to SLR / FLR policies for the native dead lettering to kick in.  It would also require configuring the ForwardTo address for dead lettering properly during provisioning of the queues and subscriptions.\r\n"},"comment":{"url":"https://api.github.com/repos/Particular/NServiceBus.AzureServiceBus/issues/comments/170530536","html_url":"https://github.com/Particular/NServiceBus.AzureServiceBus/issues/11#issuecomment-170530536","issue_url":"https://api.github.com/repos/Particular/NServiceBus.AzureServiceBus/issues/11","id":170530536,"user":{"login":"adamralph","id":677704,"avatar_url":"https://avatars.githubusercontent.com/u/677704?v=3","gravatar_id":"","url":"https://api.github.com/users/adamralph","html_url":"https://github.com/adamralph","followers_url":"https://api.github.com/users/adamralph/followers","following_url":"https://api.github.com/users/adamralph/following{/other_user}","gists_url":"https://api.github.com/users/adamralph/gists{/gist_id}","starred_url":"https://api.github.com/users/adamralph/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/adamralph/subscriptions","organizations_url":"https://api.github.com/users/adamralph/orgs","repos_url":"https://api.github.com/users/adamralph/repos","events_url":"https://api.github.com/users/adamralph/events{/privacy}","received_events_url":"https://api.github.com/users/adamralph/received_events","type":"User","site_admin":false},"created_at":"2016-01-11T12:35:18Z","updated_at":"2016-01-11T12:35:18Z","body":"np :smile: "}}