nats-io / nats-architecture-and-design

Architecture and Design Docs
Apache License 2.0
187 stars 20 forks source link

[adding] ADR-15 JetStream subscribe workflow #42

Closed kozlovic closed 2 years ago

kozlovic commented 2 years ago

Signed-off-by: Ivan Kozlovic ivan@synadia.com

scottf commented 2 years ago

On one hand it's good to have a "managed" functionality; heartbeats / flow control / delete all handled for the user. Maybe this is how it will or should most often be used. But there will certain be users who want their own granular control of things. I'm not saying don't make the client smart so the user does not have to be, I'm just saying make sure the user has the option to use basic functionality on their own and make sure they can opt out of things like deleting a consumer. Ordered Consumer is a good example. Pull mode Fetch. They are macro or managed functionality that package basic functionality in a useful way. But for instance always handling flow control and heartbeats for the user may not be appropriate for all clients or use cases. Again, it's a matter of providing defaults and options.

scottf commented 2 years ago

I proposed some significant changes to this which cannot be captured in review comments. Please see https://github.com/nats-io/nats-architecture-and-design/pull/46