{"action":"created","issue":{"url":"https://api.github.com/repos/Particular/NServiceBus.AzureServiceBus/issues/335","repository_url":"https://api.github.com/repos/Particular/NServiceBus.AzureServiceBus","labels_url":"https://api.github.com/repos/Particular/NServiceBus.AzureServiceBus/issues/335/labels{/name}","comments_url":"https://api.github.com/repos/Particular/NServiceBus.AzureServiceBus/issues/335/comments","events_url":"https://api.github.com/repos/Particular/NServiceBus.AzureServiceBus/issues/335/events","html_url":"https://github.com/Particular/NServiceBus.AzureServiceBus/issues/335","id":178131483,"number":335,"title":"Creating/updating resources that don't belong to the executing endpoint","user":{"login":"SeanFeldman","id":1309622,"avatar_url":"https://avatars.githubusercontent.com/u/1309622?v=3","gravatar_id":"","url":"https://api.github.com/users/SeanFeldman","html_url":"https://github.com/SeanFeldman","followers_url":"https://api.github.com/users/SeanFeldman/followers","following_url":"https://api.github.com/users/SeanFeldman/following{/other_user}","gists_url":"https://api.github.com/users/SeanFeldman/gists{/gist_id}","starred_url":"https://api.github.com/users/SeanFeldman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SeanFeldman/subscriptions","organizations_url":"https://api.github.com/users/SeanFeldman/orgs","repos_url":"https://api.github.com/users/SeanFeldman/repos","events_url":"https://api.github.com/users/SeanFeldman/events{/privacy}","received_events_url":"https://api.github.com/users/SeanFeldman/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/Particular/NServiceBus.AzureServiceBus/labels/Type:%20Discussion","name":"Type: Discussion","color":"cc317c"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-09-20T18:01:31Z","updated_at":"2016-09-20T18:25:30Z","closed_at":null,"body":"## Problem description\r\n\r\nPart of the discussion in issue #308 (Delivery count to respect Immediate retries and user settings), brought up the issue with how resources are created by an executing endpoint. \r\n\r\n`TransportResourcesCreator` is creating the resources needed for an executing endpoint.\r\n`ForwardingTopologySectionManager` is used to determine what resources need to be created. When it does so, it uses [SendingAddresses](https://github.com/Particular/NServiceBus.AzureServiceBus/blob/108b46f049d75af03bd7a4486303fcb766cc4c1a/src/Transport/Topology/Topologies/ForwardingTopologySectionManager.cs#L73) which is wrong.\r\n\r\nExample: endpoint A sends messages to B. B has created its queues first, then A goes through the startup process and will create its own queues, including those in `QueueBindings.SendingAddresses`. That will include error queue, audit queue, and B`s input queue. Since queues exist, it will only update those. Some of the side effects - causing `MaxDeliveryCount` to be updated to A`s `NumberOfImmediateRtries` and losing the original values.\r\n\r\n## Questions to answer\r\n\r\n1. Who's responsible to create error and audit queues? If endpoint shouldn't do this, it's a bug we need to fix and document. \r\n1. First time UX consideration w/o shared queues being created. How important that aspect is?\r\n\r\nConnects to #308 "},"comment":{"url":"https://api.github.com/repos/Particular/NServiceBus.AzureServiceBus/issues/comments/248388786","html_url":"https://github.com/Particular/NServiceBus.AzureServiceBus/issues/335#issuecomment-248388786","issue_url":"https://api.github.com/repos/Particular/NServiceBus.AzureServiceBus/issues/335","id":248388786,"user":{"login":"andreasohlund","id":125028,"avatar_url":"https://avatars.githubusercontent.com/u/125028?v=3","gravatar_id":"","url":"https://api.github.com/users/andreasohlund","html_url":"https://github.com/andreasohlund","followers_url":"https://api.github.com/users/andreasohlund/followers","following_url":"https://api.github.com/users/andreasohlund/following{/other_user}","gists_url":"https://api.github.com/users/andreasohlund/gists{/gist_id}","starred_url":"https://api.github.com/users/andreasohlund/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andreasohlund/subscriptions","organizations_url":"https://api.github.com/users/andreasohlund/orgs","repos_url":"https://api.github.com/users/andreasohlund/repos","events_url":"https://api.github.com/users/andreasohlund/events{/privacy}","received_events_url":"https://api.github.com/users/andreasohlund/received_events","type":"User","site_admin":false},"created_at":"2016-09-20T18:25:30Z","updated_at":"2016-09-20T18:25:30Z","body":">I thought we changed our mind about creating audit & error,\r\n\r\nYes we currently create those to enable a good F5 experience. Going forwards, in in future majors, I hope we can move to a model where F5 is handled by development transport + development persistence and for the \"real\" transports we instead provide guidance and scripts that shows users how to set this up for their production environments since having all the endpoints create those queues concurrently at startup is a recipe for pain.\r\n\r\nSide note: \r\nDoes this even work in Azure given that you have to have admin rights to create queues and running with admin rights is a no go from a security perspective?\r\n\r\nThe NSB host solves this by asking the users to run `NServiceBus.host.exe /install` as admin to setup the queues and then start the endpoints as a restricted account?\r\n\r\nThe above of course fails if you host your endpoints in eg. IIS so there we guide them to script those queues: \r\n\r\nhttps://docs.particular.net/nservicebus/msmq/operations-scripting#create-queues-creating-queues-for-an-endpoint\r\n\r\n@SimonCropp has some cool ideas to output the needed scripts during compile time into a `.deployment` folder or similar which I really like (again this is the future not for this version)"}}
{"actor":{"display_login":"andreasohlund"}}