nats-io / nats-architecture-and-design

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

Push Consumer active information and queue group binding #43

Closed ripienaar closed 1 year ago

ripienaar commented 2 years ago

Overview

A number of Push related changes were made:

A new ConsumerInfo boolean push_bound indicates if any subscriber is currently active on a Push Consumer. Additionally a new property deliver_group instructs the server to only deliver messages to subscriptions matching a queue group of deliver_group.

On the Sequence Pairs for ack floor and delivered is a new timestamp that shows when last message was ACKed (not NAK or Term) and when last a message was delivered

Server PR https://github.com/nats-io/nats-server/pull/2438 See ADR: https://github.com/nats-io/nats-architecture-and-design/blob/main/adr/ADR-15.md section: https://github.com/nats-io/nats-architecture-and-design/blob/main/adr/ADR-15.md#push-consumer-active-information-and-queue-group-binding

Clients and Tools

Other Tasks

Client authors please update with your progress. If you open issues in your own repositories as a result of this request, please link them to this one by pasting the issue URL in a comment or main issue description.

ripienaar commented 2 years ago

HOLD on this one, we're changing how this works.

ripienaar commented 2 years ago

HOLD on this one, we're changing how this works.

This is ready to implement, the approach has been redesigned, description, schemas etc updated.

aricart commented 2 years ago

@ripienaar can you elaborate on what the behavior should be from the client's perspective on deliver_group. I would assume that this would be:

ripienaar commented 2 years ago

@aricart I think @kozlovic is probably most on top of what is expected from clients on this one

kozlovic commented 2 years ago

I will update the ADR PR about subscribe flow later today with what was done in the Go PR #794 over the week-end.

kozlovic commented 2 years ago

This is described in here: https://github.com/nats-io/nats-architecture-and-design/pull/42/files#diff-f52a7740d240a96a07d8e7f9a40d3eb460cee1176914ea5ae1d76175f0d140bdR89. Will update this when the PR is merged to main branch.

bruth commented 1 year ago

In Rust as of https://github.com/nats-io/nats.rs/pull/252 /cc @Jarema

bruth commented 1 year ago

In Python as of https://github.com/nats-io/nats.py/pull/222 /cc @wallyqs

bruth commented 1 year ago

DeliverGroup is mentioned in the docs already.

@ripienaar Given the recent updates, are you comfortable closing this out?