{"action":"created","issue":{"url":"https://api.github.com/repos/Particular/docs.particular.net/issues/1934","repository_url":"https://api.github.com/repos/Particular/docs.particular.net","labels_url":"https://api.github.com/repos/Particular/docs.particular.net/issues/1934/labels{/name}","comments_url":"https://api.github.com/repos/Particular/docs.particular.net/issues/1934/comments","events_url":"https://api.github.com/repos/Particular/docs.particular.net/issues/1934/events","html_url":"https://github.com/Particular/docs.particular.net/pull/1934","id":178355634,"number":1934,"title":"[WIP] Describe difference between correlation and conversation IDs","user":{"login":"MarcinHoppe","id":475629,"avatar_url":"https://avatars.githubusercontent.com/u/475629?v=3","gravatar_id":"","url":"https://api.github.com/users/MarcinHoppe","html_url":"https://github.com/MarcinHoppe","followers_url":"https://api.github.com/users/MarcinHoppe/followers","following_url":"https://api.github.com/users/MarcinHoppe/following{/other_user}","gists_url":"https://api.github.com/users/MarcinHoppe/gists{/gist_id}","starred_url":"https://api.github.com/users/MarcinHoppe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MarcinHoppe/subscriptions","organizations_url":"https://api.github.com/users/MarcinHoppe/orgs","repos_url":"https://api.github.com/users/MarcinHoppe/repos","events_url":"https://api.github.com/users/MarcinHoppe/events{/privacy}","received_events_url":"https://api.github.com/users/MarcinHoppe/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"MarcinHoppe","id":475629,"avatar_url":"https://avatars.githubusercontent.com/u/475629?v=3","gravatar_id":"","url":"https://api.github.com/users/MarcinHoppe","html_url":"https://github.com/MarcinHoppe","followers_url":"https://api.github.com/users/MarcinHoppe/followers","following_url":"https://api.github.com/users/MarcinHoppe/following{/other_user}","gists_url":"https://api.github.com/users/MarcinHoppe/gists{/gist_id}","starred_url":"https://api.github.com/users/MarcinHoppe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MarcinHoppe/subscriptions","organizations_url":"https://api.github.com/users/MarcinHoppe/orgs","repos_url":"https://api.github.com/users/MarcinHoppe/repos","events_url":"https://api.github.com/users/MarcinHoppe/events{/privacy}","received_events_url":"https://api.github.com/users/MarcinHoppe/received_events","type":"User","site_admin":false},"assignees":[{"login":"MarcinHoppe","id":475629,"avatar_url":"https://avatars.githubusercontent.com/u/475629?v=3","gravatar_id":"","url":"https://api.github.com/users/MarcinHoppe","html_url":"https://github.com/MarcinHoppe","followers_url":"https://api.github.com/users/MarcinHoppe/followers","following_url":"https://api.github.com/users/MarcinHoppe/following{/other_user}","gists_url":"https://api.github.com/users/MarcinHoppe/gists{/gist_id}","starred_url":"https://api.github.com/users/MarcinHoppe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MarcinHoppe/subscriptions","organizations_url":"https://api.github.com/users/MarcinHoppe/orgs","repos_url":"https://api.github.com/users/MarcinHoppe/repos","events_url":"https://api.github.com/users/MarcinHoppe/events{/privacy}","received_events_url":"https://api.github.com/users/MarcinHoppe/received_events","type":"User","site_admin":false}],"milestone":null,"comments":2,"created_at":"2016-09-21T14:00:54Z","updated_at":"2016-09-26T12:57:09Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/Particular/docs.particular.net/pulls/1934","html_url":"https://github.com/Particular/docs.particular.net/pull/1934","diff_url":"https://github.com/Particular/docs.particular.net/pull/1934.diff","patch_url":"https://github.com/Particular/docs.particular.net/pull/1934.patch"},"body":"@Particular/docs-maintainers @andreasohlund @dvdstelt Please have a look at my attempt to describe the difference between correlation and conversation IDs. I feel it is not perfect yet (hence [WIP]) but would love to get some realy feedback."},"comment":{"url":"https://api.github.com/repos/Particular/docs.particular.net/issues/comments/249561838","html_url":"https://github.com/Particular/docs.particular.net/pull/1934#issuecomment-249561838","issue_url":"https://api.github.com/repos/Particular/docs.particular.net/issues/1934","id":249561838,"user":{"login":"danielmarbach","id":174258,"avatar_url":"https://avatars.githubusercontent.com/u/174258?v=3","gravatar_id":"","url":"https://api.github.com/users/danielmarbach","html_url":"https://github.com/danielmarbach","followers_url":"https://api.github.com/users/danielmarbach/followers","following_url":"https://api.github.com/users/danielmarbach/following{/other_user}","gists_url":"https://api.github.com/users/danielmarbach/gists{/gist_id}","starred_url":"https://api.github.com/users/danielmarbach/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danielmarbach/subscriptions","organizations_url":"https://api.github.com/users/danielmarbach/orgs","repos_url":"https://api.github.com/users/danielmarbach/repos","events_url":"https://api.github.com/users/danielmarbach/events{/privacy}","received_events_url":"https://api.github.com/users/danielmarbach/received_events","type":"User","site_admin":false},"created_at":"2016-09-26T12:57:09Z","updated_at":"2016-09-26T12:57:09Z","body":"> - What's the use case for correlation id?\r\nLike you pointed out the callback API uses the correlation id to be able to correlate back a request which was sent out to the task completion source which will complete the request when a message comes in as a reply. Any tampering from the users on the replying side (meaning the conversation ID might not longer be the message id) will break the callbacks API.\r\n\r\n- Why do we expose that to the user? What's the use case? Why can't they use conversation id or custom header?\r\n\r\nMessageId and ConversationId are a fundamental pattern in messaging. A message id is used as a correlation id when reply to. This means be can always correlate back. Some transport layers expose the correlation id as a property on their messaging entity. This means from a native integration perspective the message id and correlation id has to be transported and carried over all the time. In my old active mq days we used this principle to encode reply addresses into the message id which then when a third party integrator replied was always present. This meant we didn't have to teach third parties to concept of: Oh btw. these headers from NServiceBus you have to send back always, if not our clients will break.\r\n\r\n- Is exposing correlation id safe?\r\nNope it is not. @timbussmann, @andreasohlund and I had longer conversations about that. As soon as you tamper with it there might be dragons. We even contemplated removing it in v6 (my Github google foo fails me here).\r\n\r\n- What we woulnd't be able to do without correlation id (what features depend on it)?\r\nNope see explanation above in point two.\r\n- What we woulnd't be able to do without related to (what features depend on it)?"}}
{"actor":{"display_login":"danielmarbach"}}