{"action":"created","issue":{"url":"https://api.github.com/repos/EasyNetQ/EasyNetQ/issues/425","labels_url":"https://api.github.com/repos/EasyNetQ/EasyNetQ/issues/425/labels{/name}","comments_url":"https://api.github.com/repos/EasyNetQ/EasyNetQ/issues/425/comments","events_url":"https://api.github.com/repos/EasyNetQ/EasyNetQ/issues/425/events","html_url":"https://github.com/EasyNetQ/EasyNetQ/pull/425","id":69573421,"number":425,"title":"Delayed Exchanges support","user":{"login":"mariuszwojcik","id":1882420,"avatar_url":"https://avatars.githubusercontent.com/u/1882420?v=3","gravatar_id":"","url":"https://api.github.com/users/mariuszwojcik","html_url":"https://github.com/mariuszwojcik","followers_url":"https://api.github.com/users/mariuszwojcik/followers","following_url":"https://api.github.com/users/mariuszwojcik/following{/other_user}","gists_url":"https://api.github.com/users/mariuszwojcik/gists{/gist_id}","starred_url":"https://api.github.com/users/mariuszwojcik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mariuszwojcik/subscriptions","organizations_url":"https://api.github.com/users/mariuszwojcik/orgs","repos_url":"https://api.github.com/users/mariuszwojcik/repos","events_url":"https://api.github.com/users/mariuszwojcik/events{/privacy}","received_events_url":"https://api.github.com/users/mariuszwojcik/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":12,"created_at":"2015-04-20T12:14:56Z","updated_at":"2015-04-28T14:26:17Z","closed_at":"2015-04-27T17:06:34Z","pull_request":{"url":"https://api.github.com/repos/EasyNetQ/EasyNetQ/pulls/425","html_url":"https://github.com/EasyNetQ/EasyNetQ/pull/425","diff_url":"https://github.com/EasyNetQ/EasyNetQ/pull/425.diff","patch_url":"https://github.com/EasyNetQ/EasyNetQ/pull/425.patch"},"body":"Changes to allow support of Delayed Message exchange plugin ([Scheduling Messages with RabbitMQ](http://www.rabbitmq.com/blog/2015/04/16/scheduling-messages-with-rabbitmq/)) released for RabbitMQ.\r\n\r\nRequires [Delayed Message Plugin](http://www.rabbitmq.com/community-plugins.html) to be installed.\r\n\r\nTo use Delayed Message exchanges, please configure EasyNetQ to use `DelayedExchangeScheduler`. Helper function created to simplify configuration:\r\n```csharp\r\n  bus = RabbitHutch.CreateBus(\"host=localhost\", x => x.UseDelayedMessageExchange());\r\n```\r\n\r\nFew integration tests can be found in `DelayedExchangeSchedulerTests` file.\r\n\r\n**Important**\r\nCurrent implementation doesn't support cancellation, as it is not possible to cancel messages published to delayed exchange. It is possible to achieve cancellation in similar manner as it is now done in standard scheduler.\r\n\r\n**Implementation details**\r\nDelayed Message exchange is a new type of an exchange which will store message in mnesia until it is time for it to be delivered. When publishing future messages using this exchange, EasyNetQ will\r\n* create new, future exchange with type `x-delayed-message` and `x-delayed-type` set to exchange type.\r\n* create regular exchange\r\n* bind regular exchange to future exchange\r\n* create queue and bind it to regular exchange\r\n\r\nWhen message is published using `Publish` method then regular exchange is used and everything works as before. When `FuturePublish` is used, the message is published on future exchange. When it is time for message to be delivered, it will be routed to regular exchange and from there routed to bound queues."},"comment":{"url":"https://api.github.com/repos/EasyNetQ/EasyNetQ/issues/comments/97082904","html_url":"https://github.com/EasyNetQ/EasyNetQ/pull/425#issuecomment-97082904","issue_url":"https://api.github.com/repos/EasyNetQ/EasyNetQ/issues/425","id":97082904,"user":{"login":"mikehadlow","id":223097,"avatar_url":"https://avatars.githubusercontent.com/u/223097?v=3","gravatar_id":"","url":"https://api.github.com/users/mikehadlow","html_url":"https://github.com/mikehadlow","followers_url":"https://api.github.com/users/mikehadlow/followers","following_url":"https://api.github.com/users/mikehadlow/following{/other_user}","gists_url":"https://api.github.com/users/mikehadlow/gists{/gist_id}","starred_url":"https://api.github.com/users/mikehadlow/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mikehadlow/subscriptions","organizations_url":"https://api.github.com/users/mikehadlow/orgs","repos_url":"https://api.github.com/users/mikehadlow/repos","events_url":"https://api.github.com/users/mikehadlow/events{/privacy}","received_events_url":"https://api.github.com/users/mikehadlow/received_events","type":"User","site_admin":false},"created_at":"2015-04-28T14:26:16Z","updated_at":"2015-04-28T14:26:16Z","body":"Oh sorry about that. Yes, I've moved the page so it shows the correct\nsidebar now :)\n\nOn Tue, Apr 28, 2015 at 2:50 PM, Mariusz Wojcik <notifications@github.com>\nwrote:\n\n> Ah yes, thanks @mikehadlow <https://github.com/mikehadlow> for refreshing\n> my mind. But that leaves us with the problem of pushing my changes to\n> github wiki. As I understand, only collaborators can do that. And it is not\n> possible to send pull request for wiki, is it?\n>\n> Looks like the change is very simple: move\n> Support-for-Delayed-Messages-Plugin.md file from main folder to\n> Documentation folder, but it proves tricky.\n>\n> —\n> Reply to this email directly or view it on GitHub\n> <https://github.com/EasyNetQ/EasyNetQ/pull/425#issuecomment-97070580>.\n>\n"}}