Description
Allow cancellation of topic map go routine
Expected Behaviour
Once the topic map is being built in its own go routine, there should be some way to cancel / pause that work.
Why? Perhaps it needs to back-off for some reason, or the broker isn't available. Perhaps it should pause and restart at a later time.
Current Behaviour
Once started, there is no way to stop the topic map from being rebuilt.
Possible Solution
Introduce a Context or cancellation channel to the SDK.
The map is rebuilt in this go routine using a timer:
https://github.com/openfaas/connector-sdk/blob/master/types/controller.go#L141
Then each result is published to the subscribers via this Go routine:
https://github.com/openfaas/connector-sdk/blob/master/types/controller.go#L102
Steps to Reproduce (for bugs)
- Setup the controller
- Observe that it's building a map from the gateway
- Call cancel with the new API
- See that it stops building the map
Context
It's a best practice for Go APIs to provide cancellation.
Users have requested this in the past.