{"action":"created","comment":{"url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/pulls/comments/72481762","id":72481762,"diff_hunk":"@@ -141,77 +141,112 @@ void Connection_ConnectionShutdown(object sender, ShutdownEventArgs e)\n \n             try\n             {\n-                await ProcessMessage(eventArgs).ConfigureAwait(false);\n+                await Process(eventArgs).ConfigureAwait(false);\n+            }\n+            catch (Exception ex)\n+            {\n+                Logger.Warn(\"Failed to process message. Returning message to queue...\", ex);\n+                await consumer.Model.BasicRejectAndRequeueIfOpen(eventArgs.DeliveryTag, exclusiveScheduler).ConfigureAwait(false);\n             }\n             finally\n             {\n                 semaphore.Release();\n             }\n         }\n \n-        async Task ProcessMessage(BasicDeliverEventArgs message)\n+        async Task Process(BasicDeliverEventArgs message)\n         {\n-            string messageId = null;\n+            string messageId;\n+\n+            try\n+            {\n+                messageId = messageConverter.RetrieveMessageId(message);\n+            }\n+            catch (Exception ex)\n+            {\n+                Logger.Error($\"Failed to retreive ID from poison message. Moving message to queue '{settings.ErrorQueue}'...\", ex);\n+                await Move(message, settings.ErrorQueue).ConfigureAwait(false);\n+\n+                return;\n+            }\n+\n+            Dictionary<string, string> headers;\n \n             try\n             {\n-                Dictionary<string, string> headers;\n+                headers = messageConverter.RetrieveHeaders(message);\n+            }\n+            catch (Exception ex)\n+            {\n+                Logger.Error($\"Failed to retreive headers from poison message {messageId}. Moving message to queue '{settings.ErrorQueue}'...\", ex);\n+                await Move(message, settings.ErrorQueue).ConfigureAwait(false);\n \n+                return;\n+            }\n+\n+            using (var tokenSource = new CancellationTokenSource())\n+            {\n                 try\n                 {\n-                    messageId = messageConverter.RetrieveMessageId(message);\n-                    headers = messageConverter.RetrieveHeaders(message);\n+                    var pushContext = new PushContext(messageId, headers, new MemoryStream(message.Body ?? new byte[0]), new TransportTransaction(), tokenSource, new ContextBag());\n+                    await pipe(pushContext).ConfigureAwait(false);\n                 }\n                 catch (Exception ex)\n                 {\n-                    await poisonMessageForwarder.ForwardPoisonMessageToErrorQueue(message, ex, settings.ErrorQueue).ConfigureAwait(false);\n-                    await Acknowledge(message.DeliveryTag, messageId).ConfigureAwait(false);\n+                    Logger.Warn($\"Failed to process message '{messageId}'. Returning message to queue...\", ex);\n+                    await consumer.Model.BasicRejectAndRequeueIfOpen(message.DeliveryTag, exclusiveScheduler).ConfigureAwait(false);\n \n                     return;\n                 }\n \n-                using (var tokenSource = new CancellationTokenSource())\n+                if (tokenSource.IsCancellationRequested)\n                 {\n-                    var pushContext = new PushContext(messageId, headers, new MemoryStream(message.Body ?? new byte[0]), new TransportTransaction(), tokenSource, new ContextBag());\n-                    await pipe(pushContext).ConfigureAwait(false);\n-\n-                    if (tokenSource.IsCancellationRequested)\n+                    await consumer.Model.BasicRejectAndRequeueIfOpen(message.DeliveryTag, exclusiveScheduler).ConfigureAwait(false);\n+                }\n+                else\n+                {\n+                    try\n                     {\n-                        await Requeue(message.DeliveryTag, messageId).ConfigureAwait(false);\n+                        await consumer.Model.BasicAckSingle(message.DeliveryTag, exclusiveScheduler).ConfigureAwait(false);\n                     }\n-                    else\n+                    catch (AlreadyClosedException ex)\n                     {\n-                        await Acknowledge(message.DeliveryTag, messageId).ConfigureAwait(false);\n+                        Logger.Warn($\"Failed to acknowledge message '{messageId}' because the channel was closed. The message was returned to the queue.\", ex);\n                     }\n                 }\n             }\n-            catch (Exception ex)\n-            {\n-                Logger.Warn($\"Error while attempting to process message {messageId}. The message will be requeued.\", ex);\n-                await Requeue(message.DeliveryTag, messageId).ConfigureAwait(false);\n-            }\n         }\n \n-        async Task Acknowledge(ulong deliveryTag, string messageId)\n+        async Task Move(BasicDeliverEventArgs message, string queue, string messageId = null)\n         {\n             try\n             {\n-                await consumer.Model.BasicAckSingle(deliveryTag, exclusiveScheduler).ConfigureAwait(false);\n+                var channel = channelProvider.GetPublishChannel();\n+\n+                try\n+                {\n+                    await channel.RawSendInCaseOfFailure(queue, message.Body, message.BasicProperties).ConfigureAwait(false);\n+                }\n+                finally\n+                {\n+                    channelProvider.ReturnPublishChannel(channel);\n+                }\n             }\n-            catch (AlreadyClosedException ex)\n+            catch (Exception ex)\n             {\n-                Logger.Warn($\"Attempt to acknowledge message {messageId} failed because the channel was closed. The message will be requeued.\", ex);\n+                Logger.Error($\"Failed to move message{(messageId == null ? \"\" : \" '\" + messageId + \"'\")} to queue '{queue}'. Returning message to original queue...\", ex);","path":"src/NServiceBus.RabbitMQ/Receiving/MessagePump.cs","position":146,"original_position":146,"commit_id":"857fcef21ace82229d7ff029c0f727c2b40a8ddf","original_commit_id":"857fcef21ace82229d7ff029c0f727c2b40a8ddf","user":{"login":"bording","id":753669,"avatar_url":"https://avatars.githubusercontent.com/u/753669?v=3","gravatar_id":"","url":"https://api.github.com/users/bording","html_url":"https://github.com/bording","followers_url":"https://api.github.com/users/bording/followers","following_url":"https://api.github.com/users/bording/following{/other_user}","gists_url":"https://api.github.com/users/bording/gists{/gist_id}","starred_url":"https://api.github.com/users/bording/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bording/subscriptions","organizations_url":"https://api.github.com/users/bording/orgs","repos_url":"https://api.github.com/users/bording/repos","events_url":"https://api.github.com/users/bording/events{/privacy}","received_events_url":"https://api.github.com/users/bording/received_events","type":"User","site_admin":false},"body":"> It could, but then I'd probably want to call the method MovePoisonMessage so that the log message makes sense in the context of the caller.\r\n\r\nI'm ok with changing the name of the method because I don't see us using it for anything other than poison messages. It calls `RawSendInCaseOfFailure`, so I can't see how we'd use it for anything else.\r\n","created_at":"2016-07-27T17:15:57Z","updated_at":"2016-07-27T17:15:57Z","html_url":"https://github.com/Particular/NServiceBus.RabbitMQ/pull/188#discussion_r72481762","pull_request_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/pulls/188","_links":{"self":{"href":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/pulls/comments/72481762"},"html":{"href":"https://github.com/Particular/NServiceBus.RabbitMQ/pull/188#discussion_r72481762"},"pull_request":{"href":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/pulls/188"}}},"pull_request":{"url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/pulls/188","id":78839582,"html_url":"https://github.com/Particular/NServiceBus.RabbitMQ/pull/188","diff_url":"https://github.com/Particular/NServiceBus.RabbitMQ/pull/188.diff","patch_url":"https://github.com/Particular/NServiceBus.RabbitMQ/pull/188.patch","issue_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/issues/188","number":188,"state":"open","locked":false,"title":"Refactor message pump","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},"body":"Here's yet another take on simplifying the message pump (or at least making it easier to read).\r\n\r\nI've flattened out the methods to reduce the nesting, and also separated the parsing of the ID and headers.\r\n\r\nThe separation of the parsing ensures we have the \"best possible\" log message at any time. I.e. when we don't have the message ID, use the delivery tag for logging and when we *do* have the message ID, use that for logging. (Previously the catch over both the ID and header parsing used the message ID regardless).\r\n\r\nThere is some repetition between the overloads of methods with and without `messageID` but at least the methods are close together and very similar. This refactoring results in more LOC, but IMHO it's more readable. When you start from `Consumer_Received` you can read down the call stack quite easily and each method is relatively simple.\r\n\r\nI'm very interested to know what people think about this.\r\n\r\nAgain, this refactoring came out of trying to figure out how to address #174","created_at":"2016-07-26T12:04:43Z","updated_at":"2016-07-27T17:15:57Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e8067e40e25de2b27834ba1940b5c215c2551d4e","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/pulls/188/commits","review_comments_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/pulls/188/comments","review_comment_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/issues/188/comments","statuses_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/statuses/857fcef21ace82229d7ff029c0f727c2b40a8ddf","head":{"label":"adamralph:refactor-message-pump","ref":"refactor-message-pump","sha":"857fcef21ace82229d7ff029c0f727c2b40a8ddf","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},"repo":{"id":36650770,"name":"NServiceBus.RabbitMQ","full_name":"adamralph/NServiceBus.RabbitMQ","owner":{"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},"private":false,"html_url":"https://github.com/adamralph/NServiceBus.RabbitMQ","description":"RabbitMQ transport for NServiceBus","fork":true,"url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ","forks_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/forks","keys_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/keys{/key_id}","collaborators_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/teams","hooks_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/hooks","issue_events_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/issues/events{/number}","events_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/events","assignees_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/assignees{/user}","branches_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/branches{/branch}","tags_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/tags","blobs_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/git/refs{/sha}","trees_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/git/trees{/sha}","statuses_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/statuses/{sha}","languages_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/languages","stargazers_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/stargazers","contributors_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/contributors","subscribers_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/subscribers","subscription_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/subscription","commits_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/commits{/sha}","git_commits_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/git/commits{/sha}","comments_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/comments{/number}","issue_comment_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/issues/comments{/number}","contents_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/contents/{+path}","compare_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/compare/{base}...{head}","merges_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/merges","archive_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/downloads","issues_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/issues{/number}","pulls_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/pulls{/number}","milestones_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/milestones{/number}","notifications_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/labels{/name}","releases_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/releases{/id}","deployments_url":"https://api.github.com/repos/adamralph/NServiceBus.RabbitMQ/deployments","created_at":"2015-06-01T09:27:04Z","updated_at":"2016-04-22T09:47:54Z","pushed_at":"2016-07-27T16:03:07Z","git_url":"git://github.com/adamralph/NServiceBus.RabbitMQ.git","ssh_url":"git@github.com:adamralph/NServiceBus.RabbitMQ.git","clone_url":"https://github.com/adamralph/NServiceBus.RabbitMQ.git","svn_url":"https://github.com/adamralph/NServiceBus.RabbitMQ","homepage":null,"size":8685,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"develop"}},"base":{"label":"Particular:release-4.0.0","ref":"release-4.0.0","sha":"fe642f703cc43be994d7f91775c4b36f216da96d","user":{"login":"Particular","id":5038441,"avatar_url":"https://avatars.githubusercontent.com/u/5038441?v=3","gravatar_id":"","url":"https://api.github.com/users/Particular","html_url":"https://github.com/Particular","followers_url":"https://api.github.com/users/Particular/followers","following_url":"https://api.github.com/users/Particular/following{/other_user}","gists_url":"https://api.github.com/users/Particular/gists{/gist_id}","starred_url":"https://api.github.com/users/Particular/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Particular/subscriptions","organizations_url":"https://api.github.com/users/Particular/orgs","repos_url":"https://api.github.com/users/Particular/repos","events_url":"https://api.github.com/users/Particular/events{/privacy}","received_events_url":"https://api.github.com/users/Particular/received_events","type":"Organization","site_admin":false},"repo":{"id":12695271,"name":"NServiceBus.RabbitMQ","full_name":"Particular/NServiceBus.RabbitMQ","owner":{"login":"Particular","id":5038441,"avatar_url":"https://avatars.githubusercontent.com/u/5038441?v=3","gravatar_id":"","url":"https://api.github.com/users/Particular","html_url":"https://github.com/Particular","followers_url":"https://api.github.com/users/Particular/followers","following_url":"https://api.github.com/users/Particular/following{/other_user}","gists_url":"https://api.github.com/users/Particular/gists{/gist_id}","starred_url":"https://api.github.com/users/Particular/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Particular/subscriptions","organizations_url":"https://api.github.com/users/Particular/orgs","repos_url":"https://api.github.com/users/Particular/repos","events_url":"https://api.github.com/users/Particular/events{/privacy}","received_events_url":"https://api.github.com/users/Particular/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Particular/NServiceBus.RabbitMQ","description":"RabbitMQ transport for NServiceBus","fork":false,"url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ","forks_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/forks","keys_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/teams","hooks_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/hooks","issue_events_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/issues/events{/number}","events_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/events","assignees_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/assignees{/user}","branches_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/branches{/branch}","tags_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/tags","blobs_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/git/refs{/sha}","trees_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/statuses/{sha}","languages_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/languages","stargazers_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/stargazers","contributors_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/contributors","subscribers_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/subscribers","subscription_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/subscription","commits_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/commits{/sha}","git_commits_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/git/commits{/sha}","comments_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/comments{/number}","issue_comment_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/issues/comments{/number}","contents_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/contents/{+path}","compare_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/merges","archive_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/downloads","issues_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/issues{/number}","pulls_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/pulls{/number}","milestones_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/milestones{/number}","notifications_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/labels{/name}","releases_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/releases{/id}","deployments_url":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/deployments","created_at":"2013-09-09T07:15:32Z","updated_at":"2016-05-28T05:04:04Z","pushed_at":"2016-07-27T16:03:08Z","git_url":"git://github.com/Particular/NServiceBus.RabbitMQ.git","ssh_url":"git@github.com:Particular/NServiceBus.RabbitMQ.git","clone_url":"https://github.com/Particular/NServiceBus.RabbitMQ.git","svn_url":"https://github.com/Particular/NServiceBus.RabbitMQ","homepage":"http://docs.particular.net/nservicebus/rabbitmq/","size":9029,"stargazers_count":21,"watchers_count":21,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":17,"mirror_url":null,"open_issues_count":19,"forks":17,"open_issues":19,"watchers":21,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/pulls/188"},"html":{"href":"https://github.com/Particular/NServiceBus.RabbitMQ/pull/188"},"issue":{"href":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/issues/188"},"comments":{"href":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/issues/188/comments"},"review_comments":{"href":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/pulls/188/comments"},"review_comment":{"href":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/pulls/188/commits"},"statuses":{"href":"https://api.github.com/repos/Particular/NServiceBus.RabbitMQ/statuses/857fcef21ace82229d7ff029c0f727c2b40a8ddf"}}}}
{"actor":{"display_login":"bording"}}