This PR adds a PushConsumer implementation to jetstream, allowing easier migration to new API while maintaining usage of push consumers. For now it only supports the callback-based Consume(), more consuming options will be added in future releases.
This release adds consumer priority groups to JetStream, exposing overflow and pinning policies. For more information on consumer priority groups, see ADR-42.
Added
JetStream:
Consumer priority groups with pinned and overflow policies (#1826)
WithDefaultTimeout option for JetStream API requests (#1843)
Fixed
KeyValue:
Ensure timer is stopped when watcher is stopped (#1838)
ObjectStore:
Ensure object watcher stop closes the updates channel (#1844)
Core NATS:
Data race when reading current status in sub.StatusChanged and nc.StatusChanged (#1841)
Reset channel after closing in ForceReconnect to avoid panic on subsequent ForceReconnect calls (#1842, #1846)
Added UserInfoHandler for dynamically setting user/password (#1713)
Added PermissionErrOnSubscribe option, causing SubscribeSync to return nats.ErrPermissionViolation on NextMsg() if there was a permission error (#1728)
Added Msgs() method on Subscription, returning an iterator (iter.Seq2[*nats.Msg, error]) for the subscription. This method is only available for go version >=1.23 (#1728)
KeyValue:
Added WatchFiltered method to watch for updates with multiple filters (#1739)
Fixed
Core NATS:
Fixed closing connections on max subscriptions exceeded (#1709)
This PR contains the following updates:
| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [github.com/nats-io/nats.go](https://github.com/nats-io/nats.go) | `v1.37.0` → `v1.53.1` |  |  |
---
### Release Notes
<details>
<summary>nats-io/nats.go (github.com/nats-io/nats.go)</summary>
### [`v1.53.1`](https://github.com/nats-io/nats.go/releases/tag/v1.53.1)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.53.0...v1.53.1)
#### Changelog
This is a patch release containing no functional changes.
##### FIXED
- `Version` const and the README install line, which were not updated for v1.53.0 ([#​2118](https://github.com/nats-io/nats.go/issues/2118))
##### Complete Changes
### [`v1.53.0`](https://github.com/nats-io/nats.go/releases/tag/v1.53.0)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.52.0...v1.53.0)
#### Changelog
##### ADDED
- JetStream:
- `WithPublishAsyncAckHandler` option for JetStream async publish. Thanks [@​occamist](https://github.com/occamist) for the contribution ([#​2109](https://github.com/nats-io/nats.go/issues/2109))
- `AckFlowControlPolicy` to legacy API ([#​2091](https://github.com/nats-io/nats.go/issues/2091))
- Micro:
- `micro.WithEndpointMetadataKey`. Thanks [@​joeriddles](https://github.com/joeriddles) for the contribution ([#​2079](https://github.com/nats-io/nats.go/issues/2079))
##### FIXED
- Core NATS:
- Websocket connection with path. Thanks [@​joeriddles](https://github.com/joeriddles) for the contribution ([#​2092](https://github.com/nats-io/nats.go/issues/2092))
- `MsgsTimeout` iterator yielding a spurious `(nil, nil)` after a timeout. Thanks [@​sueun-dev](https://github.com/sueun-dev) and [@​c-tonneslan](https://github.com/c-tonneslan) for the contributions ([#​2099](https://github.com/nats-io/nats.go/issues/2099), [#​2093](https://github.com/nats-io/nats.go/issues/2093))
- JetStream:
- Data race in `resetOrderedConsumer` when resets overlap ([#​2111](https://github.com/nats-io/nats.go/issues/2111))
- Avoid panic in `PullSubscribe` consumer create path. Thanks [@​wyf027](https://github.com/wyf027) for the contribution ([#​2088](https://github.com/nats-io/nats.go/issues/2088))
- Honor per-request `JSOpt` API prefix across JetStream APIs. Thanks [@​wyf027](https://github.com/wyf027) for the contribution ([#​2087](https://github.com/nats-io/nats.go/issues/2087))
- Add nil checks for empty JetStream API responses. Thanks [@​colecschmidt](https://github.com/colecschmidt) for the contribution ([#​2073](https://github.com/nats-io/nats.go/issues/2073))
- KeyValue:
- Recognize error code 10164 for replicated KV CAS conflicts ([#​2098](https://github.com/nats-io/nats.go/issues/2098))
- Reject keys with consecutive dots in `keyValid` and `searchKeyValid`. Thanks [@​c-tonneslan](https://github.com/c-tonneslan) for the contribution ([#​2076](https://github.com/nats-io/nats.go/issues/2076))
- Micro:
- Endpoint subject prefix over-match. Thanks [@​vsaraikin](https://github.com/vsaraikin) for the contribution ([#​2105](https://github.com/nats-io/nats.go/issues/2105))
##### IMPROVED
- Performance enhancement when publishing core NATS messages with headers. Thanks [@​jonchammer](https://github.com/jonchammer) for the contribution ([#​2083](https://github.com/nats-io/nats.go/issues/2083))
- Migrate tests to ntf ([#​2082](https://github.com/nats-io/nats.go/issues/2082))
- Add docs.nats.io examples to main ([#​2106](https://github.com/nats-io/nats.go/issues/2106))
- Improve readme wording for JetStream consumers. Thanks [@​trevorah](https://github.com/trevorah) for the contribution ([#​2104](https://github.com/nats-io/nats.go/issues/2104))
##### Complete Changes
### [`v1.52.0`](https://github.com/nats-io/nats.go/releases/tag/v1.52.0)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.51.0...v1.52.0)
#### Changelog
This release focuses on 2.14 nats-server features support.
##### ADDED
- JetStream:
- Added fast batch stream config field ([#​2052](https://github.com/nats-io/nats.go/issues/2052))
- Added message scheduling headers and publish opts ([#​2051](https://github.com/nats-io/nats.go/issues/2051))
- Updated `StreamConfig` with `Consumer` field and added `AckFlowControlPolicy` ([#​2070](https://github.com/nats-io/nats.go/issues/2070))
- Added reset consumer API ([#​2069](https://github.com/nats-io/nats.go/issues/2069))
##### FIXED
- Core NATS:
- Fix Subscription.StatusChanged channel closure on Closed Subscription. Thanks [@​nithimani38-prog](https://github.com/nithimani38-prog) for the contribution ([#​2034](https://github.com/nats-io/nats.go/issues/2034))
##### IMPROVED
- Fixed Flaky JS cluster tests ([#​2062](https://github.com/nats-io/nats.go/issues/2062))
##### Complete Changes
### [`v1.51.0`](https://github.com/nats-io/nats.go/releases/tag/v1.51.0)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.50.0...v1.51.0)
#### Changelog
##### ADDED
- Core NATS:
- Option to customize write buffer size ([#​2057](https://github.com/nats-io/nats.go/issues/2057))
- Option to automatically reconnect on write error ([#​2055](https://github.com/nats-io/nats.go/issues/2055))
- Accessors for JetStream API level and `IsSysAccount` from `ServerInfo` ([#​2060](https://github.com/nats-io/nats.go/issues/2060))
##### FIXED
- Core NATS:
- Make websocket frame validation more robust ([#​2050](https://github.com/nats-io/nats.go/issues/2050))
- JetStream:
- Fix deadlock in `Consume()` when calling `Stop`/`Drain` from `ConsumeErrHandler` ([#​2059](https://github.com/nats-io/nats.go/issues/2059))
##### IMPROVED
- Fix typos in tests. Thanks [@​deining](https://github.com/deining) for the contribution ([#​2049](https://github.com/nats-io/nats.go/issues/2049))
- Fix deprecation warnings by bumping GH actions to their latest versions. Thanks [@​deining](https://github.com/deining) for the contibution ([#​2048](https://github.com/nats-io/nats.go/issues/2048))
- Code linting: remove functions min and max. Thanks [@​deining](https://github.com/deining) for the contribution ([#​2047](https://github.com/nats-io/nats.go/issues/2047))
##### Complete Changes
### [`v1.50.0`](https://github.com/nats-io/nats.go/releases/tag/v1.50.0)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.49.0...v1.50.0)
#### Changelog
##### FIXED
- Core NATS:
- Fix WebSocket close frame discarding buffered data frames ([#​2032](https://github.com/nats-io/nats.go/issues/2032))
- JetStream:
- Remove status listener in Consume()/Messages() cleanup. Thanks [@​txuna](https://github.com/txuna) for the contribution ([#​1993](https://github.com/nats-io/nats.go/issues/1993))
- Fix race condition in `orderedSubscription.Drain()` ([#​2030](https://github.com/nats-io/nats.go/issues/2030))
- Fixed `OrderedConsumer.Consume()` race in handler ([#​2043](https://github.com/nats-io/nats.go/issues/2043))
##### IMPROVED
- Core NATS:
- De-flake TestAlwaysReconnectOnAccountMaxConnectionsExceededErr ([#​2042](https://github.com/nats-io/nats.go/issues/2042))
- Wrap EOF/connection reset errors with TLS context after handshake ([#​2031](https://github.com/nats-io/nats.go/issues/2031))
- JetStream:
- Reject control characters in stream and consumer names ([#​2038](https://github.com/nats-io/nats.go/issues/2038))
- Add missing `AccountLimits` fields in `jetstream` package ([#​2041](https://github.com/nats-io/nats.go/issues/2041))
- Fix flaky TestConsumerPrioritized/messages test ([#​2033](https://github.com/nats-io/nats.go/issues/2033))
- KeyValue:
- Deduplicate keys in KeyValue.Keys() and document ListKeys behavior ([#​2029](https://github.com/nats-io/nats.go/issues/2029))
- Fix flaky TestKeyValueWithSources ([#​2036](https://github.com/nats-io/nats.go/issues/2036))
##### CHANGED
- Bump go version to 1.25 and update dependencies ([#​2044](https://github.com/nats-io/nats.go/issues/2044), [#​2039](https://github.com/nats-io/nats.go/issues/2039))
##### Complete Changes
### [`v1.49.0`](https://github.com/nats-io/nats.go/releases/tag/v1.49.0)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.48.0...v1.49.0)
#### Changelog
##### ADDED
- Core NATS:
- `IgnoreDiscoveredServers` option for skipping advertised servers ([#​2022](https://github.com/nats-io/nats.go/issues/2022))
- Reconnect to selected server callback option [#​1958](https://github.com/nats-io/nats.go/issues/1958))
- Set custom server pool ([#​1958](https://github.com/nats-io/nats.go/issues/1958))
- KeyValue:
- `Config()` method for `KeyValueStatus` ([#​2014](https://github.com/nats-io/nats.go/issues/2014))
##### FIXED
- Core NATS:
- Only remove requested status listener ([#​1991](https://github.com/nats-io/nats.go/issues/1991))
- JetStream:
- Cleanup JS Publisher Status Channel ([#​1993](https://github.com/nats-io/nats.go/issues/1993))
- Legacy JetStream:
- Fix nil pointer dereference in `ConsumerInfo`. Thanks [@​olde-ducke](https://github.com/olde-ducke) for the contribution ([#​1987](https://github.com/nats-io/nats.go/issues/1987))
- Object store:
- Use default timeout on object `Put` when context has no deadline ([#​2013](https://github.com/nats-io/nats.go/issues/2013))
##### IMPROVED
- Various docs and test improvements across the codebase. Thanks [@​jjpinto](https://github.com/jjpinto) for the contribution! ([#​1995](https://github.com/nats-io/nats.go/issues/1995), [#​1996](https://github.com/nats-io/nats.go/issues/1996), [#​1997](https://github.com/nats-io/nats.go/issues/1997), [#​1998](https://github.com/nats-io/nats.go/issues/1998), [#​1999](https://github.com/nats-io/nats.go/issues/1999), [#​2000](https://github.com/nats-io/nats.go/issues/2000), [#​2001](https://github.com/nats-io/nats.go/issues/2001), [#​2002](https://github.com/nats-io/nats.go/issues/2002), [#​2003](https://github.com/nats-io/nats.go/issues/2003), [#​2004](https://github.com/nats-io/nats.go/issues/2004), [#​2005](https://github.com/nats-io/nats.go/issues/2005), [#​2007](https://github.com/nats-io/nats.go/issues/2007), [#​2008](https://github.com/nats-io/nats.go/issues/2008), [#​2009](https://github.com/nats-io/nats.go/issues/2009), [#​2010](https://github.com/nats-io/nats.go/issues/2010), [#​2011](https://github.com/nats-io/nats.go/issues/2011), [#​2012](https://github.com/nats-io/nats.go/issues/2012), [#​2016](https://github.com/nats-io/nats.go/issues/2016), [#​2017](https://github.com/nats-io/nats.go/issues/2017), [#​2018](https://github.com/nats-io/nats.go/issues/2018), [#​2019](https://github.com/nats-io/nats.go/issues/2019), [#​2020](https://github.com/nats-io/nats.go/issues/2020))
- Add JetStream migration guide ([#​2023](https://github.com/nats-io/nats.go/issues/2023))
##### Complete Changes
### [`v1.48.0`](https://github.com/nats-io/nats.go/releases/tag/v1.48.0)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.47.0...v1.48.0)
#### Changelog
##### ADDED
- Core NATS:
- Add publish subject validation and a connection option to skip it ([#​1974](https://github.com/nats-io/nats.go/issues/1974), [#​1979](https://github.com/nats-io/nats.go/issues/1979))
- KeyValue:
- Enable custom subject transforms on KV sourcing ([#​1960](https://github.com/nats-io/nats.go/issues/1960))
##### FIXED
- JetStream:
- Fix function pointer check in `js.apiRequestWithContext`. Thanks [@​svenfoo](https://github.com/svenfoo) for the contribution ([#​1957](https://github.com/nats-io/nats.go/issues/1957))
- Use QueueSubscribe if DeliverGroup is configured on PushConsumer ([#​1966](https://github.com/nats-io/nats.go/issues/1966))
- KeyValue:
- Fix data race when closing watcher updates channel in kv.go ([#​1965](https://github.com/nats-io/nats.go/issues/1965))
##### IMPROVED
- Remove extraneous PullThresholdMessages type definition from README. Thanks [@​PeterBParker](https://github.com/PeterBParker) for the contribution ([#​1959](https://github.com/nats-io/nats.go/issues/1959))
- Fix typo in README for service creation method ([#​1962](https://github.com/nats-io/nats.go/issues/1962))
- Mention performance implications of using Consumer.Fetch in docs ([#​1983](https://github.com/nats-io/nats.go/issues/1983))
##### Complete Changes
### [`v1.47.0`](https://github.com/nats-io/nats.go/releases/tag/v1.47.0)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.46.1...v1.47.0)
#### Changelog
##### ADDED
- Core NATS:
- Support sending custom WebSocket headers on connect. Thanks [@​saurabhojha](https://github.com/saurabhojha) for the contribution ([#​1919](https://github.com/nats-io/nats.go/issues/1919))
##### FIXED
- Core NATS:
- Capture async callbacks before pushing on dispatch queue ([#​1955](https://github.com/nats-io/nats.go/issues/1955))
- Object Store:
- Fixed data race when cancelling context while getting object ([#​1949](https://github.com/nats-io/nats.go/issues/1949))
- JetStream:
- Fixed double channel close on simultaneous Stop and Drain ([#​1953](https://github.com/nats-io/nats.go/issues/1953))
##### IMPROVED
- Clarify `MessagesContext.Next()` doc ([#​1951](https://github.com/nats-io/nats.go/issues/1951))
##### Complete Changes
### [`v1.46.1`](https://github.com/nats-io/nats.go/releases/tag/v1.46.1)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.46.0...v1.46.1)
#### Changelog
##### FIXED
- JetStream:
- Add omitempty to AllowMsgTTL and AllowMsgCounter ([#​1947](https://github.com/nats-io/nats.go/issues/1947))
##### Complete Changes
### [`v1.46.0`](https://github.com/nats-io/nats.go/releases/tag/v1.46.0)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.45.0...v1.46.0)
#### Changelog
##### Overview
This release enables features introduced in [nats-server@v2.12.0](https://github.com/nats-io/nats-server/releases/tag/v2.12.0).
Some features, while enabled in the client by adding relevant configuration, have APIs exposed in [synadia-io/orbit.go](https://github.com/synadia-io/orbit.go), namely:
- [Distributed Counters](https://github.com/synadia-io/orbit.go/blob/main/counters/README.md)
- [Atomic batch publish](https://github.com/synadia-io/orbit.go/blob/main/jetstreamext/README.md#atomic-batch-publishing)
##### ADDED
- JetStream:
- Stream counters configuration option ([#​1932](https://github.com/nats-io/nats.go/issues/1932), [#​1939](https://github.com/nats-io/nats.go/issues/1939))
- New fields in `ClusterInfo` ([#​1935](https://github.com/nats-io/nats.go/issues/1935))
- `AllowAtomicPublish` stream configuration option ([#​1940](https://github.com/nats-io/nats.go/issues/1940))
- `PersistMode` stream config option for configurable stream persistence settings ([#​1943](https://github.com/nats-io/nats.go/issues/1943))
- `AllowMsgSchedules` stream configuration option to enable message scheduling ([#​1942](https://github.com/nats-io/nats.go/issues/1942))
- Context and timeout options to `Messages.Next()` plus `Fetch` context support ([#​1938](https://github.com/nats-io/nats.go/issues/1938))
- Support custom name prefix for ordered consumers ([#​1928](https://github.com/nats-io/nats.go/issues/1928))
- Prioritized priority policy ([#​1937](https://github.com/nats-io/nats.go/issues/1937))
- KeyValue:
- Added KeyValue bucket metadada support ([#​1944](https://github.com/nats-io/nats.go/issues/1944))
##### IMPROVED
- JetStream:
- Add max consumers limit error (code=10026). Thanks [@​Arlet2](https://github.com/Arlet2) for the contribution ([#​1922](https://github.com/nats-io/nats.go/issues/1922))
- Return more specific cons info error on ordered consumer recreation ([#​1931](https://github.com/nats-io/nats.go/issues/1931))
##### Complete Changes
### [`v1.45.0`](https://github.com/nats-io/nats.go/releases/tag/v1.45.0)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.44.0...v1.45.0)
#### Changelog
##### ADDED
- Core NATS:
- Handling for maximum account active connections exceeded ([#​1921](https://github.com/nats-io/nats.go/issues/1921))
- JetStream:
- `WithExpectLastSequenceForSubject` publish option ([#​1920](https://github.com/nats-io/nats.go/issues/1920))
##### FIXED
- Core NATS:
- Track delivered count and auto-unsubscribe for channel subscriptions ([#​1913](https://github.com/nats-io/nats.go/issues/1913))
- Clear status listeners map on `SubscriptionClosed` event to prevent race condition ([#​1914](https://github.com/nats-io/nats.go/issues/1914))
- Call `ReconnectErrHandler` for initial connection failures with `RetryOnFailedConnect` ([#​1915](https://github.com/nats-io/nats.go/issues/1915))
- JetStream:
- `CreateOrUpdateStream` preserves domain prefix during updates ([#​1917](https://github.com/nats-io/nats.go/issues/1917))
- Handle empty response when creating a consumer ([#​1912](https://github.com/nats-io/nats.go/issues/1912))
##### IMPROVED
- KeyValue:
- Add test checking KV TTL watcher updates ([#​1916](https://github.com/nats-io/nats.go/issues/1916))
##### Complete Changes
### [`v1.44.0`](https://github.com/nats-io/nats.go/releases/tag/v1.44.0)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.43.0...v1.44.0)
#### Changelog
#### Overview
This PR adds a `PushConsumer` implementation to `jetstream`, allowing easier migration to new API while maintaining usage of push consumers. For now it only supports the callback-based `Consume()`, more consuming options will be added in future releases.
##### ADDED
- Core NATS:
- `UserCredentialBytes()` `Conn` option ([#​1877](https://github.com/nats-io/nats.go/issues/1877))
- JetStream:
- `PushConsumer` implementation in `jetstream` package
- Expose `ClientTrace` in `JetStreamOptions` ([#​1886](https://github.com/nats-io/nats.go/issues/1886))
- Service API:
- Expose `WithEndpointPendingLimits` option ([#​1899](https://github.com/nats-io/nats.go/issues/1899))
- Legacy KeyValue:
- `Error()` method to `KeyLister` and `KeyWatcher` interfaces ([#​1889](https://github.com/nats-io/nats.go/issues/1889))
##### FIXED
- Core NATS:
- Fix timeoutWriter not recovering after first error ([#​1896](https://github.com/nats-io/nats.go/issues/1896))
- JetStream:
- `Consumer.Next()` hangs after connection is closed ([#​1883](https://github.com/nats-io/nats.go/issues/1883))
- Fixed stream info request for strict mode ([#​1887](https://github.com/nats-io/nats.go/issues/1887))
- Ordered consumer not closing on connection close ([#​1885](https://github.com/nats-io/nats.go/issues/1885))
- Return a more appropriate error when Subject Transform is not supported ([#​1416](https://github.com/nats-io/nats.go/issues/1416))
- Fix subject transform comparison. Thanks [@​erikmansson](https://github.com/erikmansson) for the contribution ([#​1907](https://github.com/nats-io/nats.go/issues/1907))
- Legacy JetStream:
- Use timeout from `JetStreamContext` if no deadline is set on ctx ([#​1909](https://github.com/nats-io/nats.go/issues/1909))
- KeyValue:
- `Keys()` and `ListKeys()` returning duplicates ([#​1884](https://github.com/nats-io/nats.go/issues/1884))
- Fix subject prefix for the Create/Update operation in KV store. Thanks [@​SalvaChiLlo](https://github.com/SalvaChiLlo) for the contribution ([#​1903](https://github.com/nats-io/nats.go/issues/1903))
##### CHANGED
- Change `DefaultSubPendingMsgsLimit` ([#​998](https://github.com/nats-io/nats.go/issues/998))
##### Complete Changes
### [`v1.43.0`](https://github.com/nats-io/nats.go/releases/tag/v1.43.0)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.42.0...v1.43.0)
#### Changelog
##### ADDED
- Core NATS:
- Add `nc.LocalAddr`, similar to `nc.ConnectedAddr` ([#​1877](https://github.com/nats-io/nats.go/issues/1877))
##### FIXED
- Service API:
- Fix stopping service not unsubscribing from all endpoints. Thanks [@​arunsworld](https://github.com/arunsworld) for the contribution ([#​1872](https://github.com/nats-io/nats.go/issues/1872))
- Remove `fmt.Println` from `Service.Stop()` ([#​1880](https://github.com/nats-io/nats.go/issues/1880))
- Legacy KeyValue:
- Fix possible race setting timer in kv.WatchFiltered ([#​1879](https://github.com/nats-io/nats.go/issues/1879))
##### Complete Changes
### [`v1.42.0`](https://github.com/nats-io/nats.go/releases/tag/v1.42.0)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.41.2...v1.42.0)
#### Changelog
##### Overview
This release adds per-key TTL functionality to key-value stores. It adds:
1. `LimitMarkerTTL` config option to enable automatic tombstone deletion.
2. `KeyTTL` option to `kv.Create()`
3. `PurgeTTL()` option to `kv.Purge()`
##### ADDED
- KeyValue:
- Added KeyValue per key TTL support and limit markers ([#​1864](https://github.com/nats-io/nats.go/issues/1864))
##### Complete Changes
### [`v1.41.2`](https://github.com/nats-io/nats.go/releases/tag/v1.41.2)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.41.1...v1.41.2)
#### Changelog
##### ADDED
- Core NATS:
- Add `nc.RemoveStatusListener()` method ([#​1856](https://github.com/nats-io/nats.go/issues/1856))
##### FIXED
- Legacy JetStream:
- Fix `Fetch` and `FetchBatch` memory leak ([#​1856](https://github.com/nats-io/nats.go/issues/1856))
- Legacy KeyValue:
- Use context in when purging stream in `kv.PurgeDeletes()` ([#​1858](https://github.com/nats-io/nats.go/issues/1858))
- Bump golang.org/x/crypto to fix vulnerability ([#​1857](https://github.com/nats-io/nats.go/issues/1857))
##### Complete Changes
### [`v1.41.1`](https://github.com/nats-io/nats.go/releases/tag/v1.41.1)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.41.0...v1.41.1)
#### Changelog
##### FIXED
- ObjectStore:
- Use default timeout for `ObjectStore.Get` when no deadline is set on ctx ([#​1850](https://github.com/nats-io/nats.go/issues/1850))
##### IMPROVED
- Remove `golang.org/x/text` dependency ([#​1849](https://github.com/nats-io/nats.go/issues/1849))
##### Complete Changes
### [`v1.41.0`](https://github.com/nats-io/nats.go/releases/tag/v1.41.0)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.40.1...v1.41.0)
#### Changelog
##### Overview
This release adds consumer priority groups to JetStream, exposing overflow and pinning policies. For more information on consumer priority groups, see [ADR-42](https://github.com/nats-io/nats-architecture-and-design/blob/main/adr/ADR-42.md).
##### Added
- JetStream:
- Consumer priority groups with pinned and overflow policies ([#​1826](https://github.com/nats-io/nats.go/issues/1826))
- `WithDefaultTimeout` option for JetStream API requests ([#​1843](https://github.com/nats-io/nats.go/issues/1843))
##### Fixed
- KeyValue:
- Ensure timer is stopped when watcher is stopped ([#​1838](https://github.com/nats-io/nats.go/issues/1838))
- ObjectStore:
- Ensure object watcher stop closes the updates channel ([#​1844](https://github.com/nats-io/nats.go/issues/1844))
- Core NATS:
- Data race when reading current status in `sub.StatusChanged` and `nc.StatusChanged` ([#​1841](https://github.com/nats-io/nats.go/issues/1841))
- Reset channel after closing in `ForceReconnect` to avoid panic on subsequent `ForceReconnect` calls ([#​1842](https://github.com/nats-io/nats.go/issues/1842), [#​1846](https://github.com/nats-io/nats.go/issues/1846))
##### Changed
##### Improved
- Legacy JetStream:
- Cancel `Fetch` and `FetchBatch` on reconnect ([#​1840](https://github.com/nats-io/nats.go/issues/1840))
- JetStream:
- Invalid default in documentation for `OrderedConsumerConfig.InactiveThreshold` ([#​1845](https://github.com/nats-io/nats.go/issues/1845))
- KeyValue:
- Stop the watcher before performing the purge operations for `PurgeDeletes` ([#​1839](https://github.com/nats-io/nats.go/issues/1839))
##### Complete Changes
### [`v1.40.1`](https://github.com/nats-io/nats.go/releases/tag/v1.40.1)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.40.0...v1.40.1)
#### Changelog
##### Overview
This release fixes an issue in legacy JetStream `Subscribe` which did not respect user-set context when creating a consumer.
##### FIXED
- Legacy JetStream:
- Set context from option when creating consumer in `js.Subscribe` ([#​1835](https://github.com/nats-io/nats.go/issues/1835))
##### Complete Changes
### [`v1.40.0`](https://github.com/nats-io/nats.go/releases/tag/v1.40.0)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.39.1...v1.40.0)
#### Changelog
##### Overview
This release focuses on adding support for new features from [NATS Server v2.11.0](https://github.com/nats-io/nats-server/releases/tag/v2.11.0). This includes:
- Per message TTLs
- Consumer pause and resume
Batch direct get will be released in [orbit](https://github.com/synadia-io/orbit.go). Support for consumer priority groups will be added in the next minor release.
##### Added
- JetStream:
- Pause and resume JetStream consumer. Thanks [@​yordis](https://github.com/yordis) for the contribution ([#​1571](https://github.com/nats-io/nats.go/issues/1571))
- Per message TTL option for JetStream publish ([#​1825](https://github.com/nats-io/nats.go/issues/1825))
- Timeout option for async publish ([#​1819](https://github.com/nats-io/nats.go/issues/1819))
- Service API
- Support for disabling queue groups at service, group, and endpoint levels ([#​1797](https://github.com/nats-io/nats.go/issues/1797))
- Core NATS:
- `ReconnectErrCB` for handling failed reconnect attempts in a callback. Thanks [@​sschleemilch](https://github.com/sschleemilch) for the contribution ([#​1804](https://github.com/nats-io/nats.go/issues/1804))
##### Fixed
- JetStream
- Invalid subscription on ordered consumer in leaderless cluster ([#​1808](https://github.com/nats-io/nats.go/issues/1808))
- Ordered consumer not restarting on no responders ([#​1827](https://github.com/nats-io/nats.go/issues/1827))
- Avoid ack id collision in PublishAsync ([#​1812](https://github.com/nats-io/nats.go/issues/1812))
- Possible panic in `Consumer.Fetch` ([#​1828](https://github.com/nats-io/nats.go/issues/1828))
- Use `resp.Error` to show NATS error in `deleteMsg`. Thanks [@​imariman](https://github.com/imariman) for the contribution ([#​1822](https://github.com/nats-io/nats.go/issues/1822))
- KeyValue
- Deadlock when fetching keys from KV while messages are deleted/purged ([#​1824](https://github.com/nats-io/nats.go/issues/1824))
##### Changed
- Bump go version to 1.23 and update dependencies ([#​1821](https://github.com/nats-io/nats.go/issues/1821))
##### Complete Changes
### [`v1.39.1`](https://github.com/nats-io/nats.go/releases/tag/v1.39.1)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.39.0...v1.39.1)
#### Changelog
##### Fixed
- KeyValue:
- Prevent `ListKeysFiltered` from returning deleted keys. Thanks [@​kruegernet](https://github.com/kruegernet) for the contribution ([#​1803](https://github.com/nats-io/nats.go/issues/1803))
##### Improved
- Remove stale experimental comment in Service API ([#​1805](https://github.com/nats-io/nats.go/issues/1805))
##### Complete Changes
### [`v1.39.0`](https://github.com/nats-io/nats.go/releases/tag/v1.39.0)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.38.0...v1.39.0)
#### Changelog
##### Overview
This release bumps the minimal go version in `go.mod` to `1.22`.
##### Added
- JetStream:
- Added `PullMaxMessagesWithBytesLimit` option for Consume and Messages ([#​1789](https://github.com/nats-io/nats.go/issues/1789))
- Added `Metadata` to `OrderedConsumerConfig`. Thanks [@​mwain](https://github.com/mwain) for the contribution ([#​1737](https://github.com/nats-io/nats.go/issues/1737))
- Added `JetStream.Options()` and `JetStream.Conn()` methods to `JetStream` interface ([#​1792](https://github.com/nats-io/nats.go/issues/1792))
- KeyValue:
- Added `ListKeysFiltered` for listing keys with multiple filters. Thanks [@​somratdutta](https://github.com/somratdutta) for the contribution ([#​1711](https://github.com/nats-io/nats.go/issues/1711))
##### Fixed
- JetStream:
- Fixed invalid heartbeat timer for `Consumer.Messages()` ([#​1786](https://github.com/nats-io/nats.go/issues/1786))
- ObjectStore:
- Fixed invalid error being returned from `DeleteObjectStore` ([#​1762](https://github.com/nats-io/nats.go/issues/1762))
- WebSockets:
- Fixed protocol parsing errors with websocket compression and PONGs. Thanks [@​rsafonseca](https://github.com/rsafonseca) for the contribution ([#​1790](https://github.com/nats-io/nats.go/issues/1790))
- Core NATS:
- Protect against possible nil pointer panic ([#​1771](https://github.com/nats-io/nats.go/issues/1771))
##### Changed
- Bump go version to v1.22 ([#​1773](https://github.com/nats-io/nats.go/issues/1773))
##### Improved
- Fixed typo in JetStream docs. Thanks [@​davydog187](https://github.com/davydog187) for the contribution ([#​1758](https://github.com/nats-io/nats.go/issues/1758))
- Improved documentation of JetStream `Consume` and `Messages` options ([#​1770](https://github.com/nats-io/nats.go/issues/1770))
- Removed obsolete build tags ([#​1787](https://github.com/nats-io/nats.go/issues/1787))
##### Complete Changes
### [`v1.38.0`](https://github.com/nats-io/nats.go/releases/tag/v1.38.0)
[Compare Source](https://github.com/nats-io/nats.go/compare/v1.37.0...v1.38.0)
#### Changelog
##### Added
- Core NATS:
- Added `UserInfoHandler` for dynamically setting user/password ([#​1713](https://github.com/nats-io/nats.go/issues/1713))
- Added `PermissionErrOnSubscribe` option, causing `SubscribeSync` to return `nats.ErrPermissionViolation` on `NextMsg()` if there was a permission error ([#​1728](https://github.com/nats-io/nats.go/issues/1728))
- Added `Msgs()` method on `Subscription`, returning an iterator (`iter.Seq2[*nats.Msg, error]`) for the subscription. This method is only available for go version >=1.23 ([#​1728](https://github.com/nats-io/nats.go/issues/1728))
- KeyValue:
- Added `WatchFiltered` method to watch for updates with multiple filters ([#​1739](https://github.com/nats-io/nats.go/issues/1739))
##### Fixed
- Core NATS:
- Fixed closing connections on max subscriptions exceeded ([#​1709](https://github.com/nats-io/nats.go/issues/1709))
- Removed redundant nil checks. Thanks [@​ramonberrutti](https://github.com/ramonberrutti) for the contribution ([#​1751](https://github.com/nats-io/nats.go/issues/1751))
- Add missing nats prefix to error ([#​1753](https://github.com/nats-io/nats.go/issues/1753))
- JetStream:
- Fixed `PublishAsync` not closing done and stall channels after failed retries ([#​1719](https://github.com/nats-io/nats.go/issues/1719))
- Set valid fetch sequence in ordered consumer's `Fetch()` and `Next()` after timeout ([#​1705](https://github.com/nats-io/nats.go/issues/1705))
- Do not overwrite ordered consumer deliver policy if start time is set ([#​1742](https://github.com/nats-io/nats.go/issues/1742))
- Fixed race condition in `MessageBatch` ([#​1743](https://github.com/nats-io/nats.go/issues/1743))
- Legacy JetStream:
- Fixed race condition in `MessageBatch` ([#​1743](https://github.com/nats-io/nats.go/issues/1743))
##### Changed
- Legacy Jetstream:
- Added client retry for jetstream async publish old API. Thanks [@​pranavmehta94](https://github.com/pranavmehta94) for the contribution ([#​1695](https://github.com/nats-io/nats.go/issues/1695))
##### Improved
- Moved CI to github actions ([#​1623](https://github.com/nats-io/nats.go/issues/1623), [#​1716](https://github.com/nats-io/nats.go/issues/1716))
- Use errors.New instead of fmt.Errorf to improve efficiency. Thanks [@​canack](https://github.com/canack) for the contribution ([#​1707](https://github.com/nats-io/nats.go/issues/1707))
- Fixed invalid schemas in Service API documentation ([#​1720](https://github.com/nats-io/nats.go/issues/1720))
- Added mention of TTL reset in `kv.Update` method. Thanks [@​fmontorsi-equinix](https://github.com/fmontorsi-equinix) for the contribution ([#​1727](https://github.com/nats-io/nats.go/issues/1727))
- Updated installation commands in `README.md` ([#​1745](https://github.com/nats-io/nats.go/issues/1745))
- Bump `nkeys` to v0.4.9 ([#​1750](https://github.com/nats-io/nats.go/issues/1750))
##### Complete Changes
</details>
---
### Configuration
📅 **Schedule**: (UTC)
- Branch creation
- At any time (no schedule defined)
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzYuMyIsInVwZGF0ZWRJblZlciI6IjQ0LjM3LjEiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyIsInJlbm92YXRlIl19-->
In order to perform the update(s) described in the table above, Renovate ran the go get command, which resulted in the following additional change(s):
4 additional dependencies were updated
The go directive was updated for compatibility reasons
Details:
Package
Change
go
1.23.0 -> 1.25.0
github.com/klauspost/compress
v1.18.0 -> v1.19.2
github.com/nats-io/nkeys
v0.4.7 -> v0.4.16
golang.org/x/crypto
v0.18.0 -> v0.55.0
golang.org/x/sys
v0.35.0 -> v0.47.0
### ℹ️ Artifact update notice
##### File name: go.mod
In order to perform the update(s) described in the table above, Renovate ran the `go get` command, which resulted in the following additional change(s):
- 4 additional dependencies were updated
- The `go` directive was updated for compatibility reasons
Details:
| **Package** | **Change** |
| :------------------------------ | :--------------------- |
| `go` | `1.23.0` -> `1.25.0` |
| `github.com/klauspost/compress` | `v1.18.0` -> `v1.19.2` |
| `github.com/nats-io/nkeys` | `v0.4.7` -> `v0.4.16` |
| `golang.org/x/crypto` | `v0.18.0` -> `v0.55.0` |
| `golang.org/x/sys` | `v0.35.0` -> `v0.47.0` |
renovate-bot
changed title from chore(deps): Update module github.com/nats-io/nats.go to v1.52.0 to chore(deps): Update module github.com/nats-io/nats.go to v1.53.02026-08-11 16:00:54 +00:00
renovate-bot
changed title from chore(deps): Update module github.com/nats-io/nats.go to v1.53.0 to chore(deps): Update module github.com/nats-io/nats.go to v1.53.12026-08-11 18:00:57 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
v1.37.0→v1.53.1Release Notes
nats-io/nats.go (github.com/nats-io/nats.go)
v1.53.1Compare Source
Changelog
This is a patch release containing no functional changes.
FIXED
Versionconst and the README install line, which were not updated for v1.53.0 (#2118)Complete Changes
v1.53.0Compare Source
Changelog
ADDED
WithPublishAsyncAckHandleroption for JetStream async publish. Thanks @occamist for the contribution (#2109)AckFlowControlPolicyto legacy API (#2091)micro.WithEndpointMetadataKey. Thanks @joeriddles for the contribution (#2079)FIXED
MsgsTimeoutiterator yielding a spurious(nil, nil)after a timeout. Thanks @sueun-dev and @c-tonneslan for the contributions (#2099, #2093)resetOrderedConsumerwhen resets overlap (#2111)PullSubscribeconsumer create path. Thanks @wyf027 for the contribution (#2088)JSOptAPI prefix across JetStream APIs. Thanks @wyf027 for the contribution (#2087)keyValidandsearchKeyValid. Thanks @c-tonneslan for the contribution (#2076)IMPROVED
Complete Changes
v1.52.0Compare Source
Changelog
This release focuses on 2.14 nats-server features support.
ADDED
StreamConfigwithConsumerfield and addedAckFlowControlPolicy(#2070)FIXED
IMPROVED
Complete Changes
v1.51.0Compare Source
Changelog
ADDED
IsSysAccountfromServerInfo(#2060)FIXED
Consume()when callingStop/DrainfromConsumeErrHandler(#2059)IMPROVED
Complete Changes
v1.50.0Compare Source
Changelog
FIXED
orderedSubscription.Drain()(#2030)OrderedConsumer.Consume()race in handler (#2043)IMPROVED
AccountLimitsfields injetstreampackage (#2041)CHANGED
Complete Changes
v1.49.0Compare Source
Changelog
ADDED
IgnoreDiscoveredServersoption for skipping advertised servers (#2022)Config()method forKeyValueStatus(#2014)FIXED
ConsumerInfo. Thanks @olde-ducke for the contribution (#1987)Putwhen context has no deadline (#2013)IMPROVED
Complete Changes
v1.48.0Compare Source
Changelog
ADDED
FIXED
js.apiRequestWithContext. Thanks @svenfoo for the contribution (#1957)IMPROVED
Complete Changes
v1.47.0Compare Source
Changelog
ADDED
FIXED
IMPROVED
MessagesContext.Next()doc (#1951)Complete Changes
v1.46.1Compare Source
Changelog
FIXED
Complete Changes
v1.46.0Compare Source
Changelog
Overview
This release enables features introduced in nats-server@v2.12.0.
Some features, while enabled in the client by adding relevant configuration, have APIs exposed in synadia-io/orbit.go, namely:
ADDED
ClusterInfo(#1935)AllowAtomicPublishstream configuration option (#1940)PersistModestream config option for configurable stream persistence settings (#1943)AllowMsgSchedulesstream configuration option to enable message scheduling (#1942)Messages.Next()plusFetchcontext support (#1938)IMPROVED
Complete Changes
v1.45.0Compare Source
Changelog
ADDED
WithExpectLastSequenceForSubjectpublish option (#1920)FIXED
SubscriptionClosedevent to prevent race condition (#1914)ReconnectErrHandlerfor initial connection failures withRetryOnFailedConnect(#1915)CreateOrUpdateStreampreserves domain prefix during updates (#1917)IMPROVED
Complete Changes
v1.44.0Compare Source
Changelog
Overview
This PR adds a
PushConsumerimplementation tojetstream, allowing easier migration to new API while maintaining usage of push consumers. For now it only supports the callback-basedConsume(), more consuming options will be added in future releases.ADDED
UserCredentialBytes()Connoption (#1877)PushConsumerimplementation injetstreampackageClientTraceinJetStreamOptions(#1886)WithEndpointPendingLimitsoption (#1899)Error()method toKeyListerandKeyWatcherinterfaces (#1889)FIXED
Consumer.Next()hangs after connection is closed (#1883)JetStreamContextif no deadline is set on ctx (#1909)Keys()andListKeys()returning duplicates (#1884)CHANGED
DefaultSubPendingMsgsLimit(#998)Complete Changes
v1.43.0Compare Source
Changelog
ADDED
nc.LocalAddr, similar tonc.ConnectedAddr(#1877)FIXED
fmt.PrintlnfromService.Stop()(#1880)Complete Changes
v1.42.0Compare Source
Changelog
Overview
This release adds per-key TTL functionality to key-value stores. It adds:
LimitMarkerTTLconfig option to enable automatic tombstone deletion.KeyTTLoption tokv.Create()PurgeTTL()option tokv.Purge()ADDED
Complete Changes
v1.41.2Compare Source
Changelog
ADDED
nc.RemoveStatusListener()method (#1856)FIXED
FetchandFetchBatchmemory leak (#1856)kv.PurgeDeletes()(#1858)Complete Changes
v1.41.1Compare Source
Changelog
FIXED
ObjectStore.Getwhen no deadline is set on ctx (#1850)IMPROVED
golang.org/x/textdependency (#1849)Complete Changes
v1.41.0Compare Source
Changelog
Overview
This release adds consumer priority groups to JetStream, exposing overflow and pinning policies. For more information on consumer priority groups, see ADR-42.
Added
WithDefaultTimeoutoption for JetStream API requests (#1843)Fixed
sub.StatusChangedandnc.StatusChanged(#1841)ForceReconnectto avoid panic on subsequentForceReconnectcalls (#1842, #1846)Changed
Improved
FetchandFetchBatchon reconnect (#1840)OrderedConsumerConfig.InactiveThreshold(#1845)PurgeDeletes(#1839)Complete Changes
v1.40.1Compare Source
Changelog
Overview
This release fixes an issue in legacy JetStream
Subscribewhich did not respect user-set context when creating a consumer.FIXED
js.Subscribe(#1835)Complete Changes
v1.40.0Compare Source
Changelog
Overview
This release focuses on adding support for new features from NATS Server v2.11.0. This includes:
Batch direct get will be released in orbit. Support for consumer priority groups will be added in the next minor release.
Added
ReconnectErrCBfor handling failed reconnect attempts in a callback. Thanks @sschleemilch for the contribution (#1804)Fixed
Consumer.Fetch(#1828)resp.Errorto show NATS error indeleteMsg. Thanks @imariman for the contribution (#1822)Changed
Complete Changes
v1.39.1Compare Source
Changelog
Fixed
ListKeysFilteredfrom returning deleted keys. Thanks @kruegernet for the contribution (#1803)Improved
Complete Changes
v1.39.0Compare Source
Changelog
Overview
This release bumps the minimal go version in
go.modto1.22.Added
PullMaxMessagesWithBytesLimitoption for Consume and Messages (#1789)MetadatatoOrderedConsumerConfig. Thanks @mwain for the contribution (#1737)JetStream.Options()andJetStream.Conn()methods toJetStreaminterface (#1792)ListKeysFilteredfor listing keys with multiple filters. Thanks @somratdutta for the contribution (#1711)Fixed
Consumer.Messages()(#1786)DeleteObjectStore(#1762)Changed
Improved
ConsumeandMessagesoptions (#1770)Complete Changes
v1.38.0Compare Source
Changelog
Added
UserInfoHandlerfor dynamically setting user/password (#1713)PermissionErrOnSubscribeoption, causingSubscribeSyncto returnnats.ErrPermissionViolationonNextMsg()if there was a permission error (#1728)Msgs()method onSubscription, returning an iterator (iter.Seq2[*nats.Msg, error]) for the subscription. This method is only available for go version >=1.23 (#1728)WatchFilteredmethod to watch for updates with multiple filters (#1739)Fixed
PublishAsyncnot closing done and stall channels after failed retries (#1719)Fetch()andNext()after timeout (#1705)MessageBatch(#1743)MessageBatch(#1743)Changed
Improved
kv.Updatemethod. Thanks @fmontorsi-equinix for the contribution (#1727)README.md(#1745)nkeysto v0.4.9 (#1750)Complete Changes
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate CLI.
ℹ️ Artifact update notice
File name: go.mod
In order to perform the update(s) described in the table above, Renovate ran the
go getcommand, which resulted in the following additional change(s):godirective was updated for compatibility reasonsDetails:
go1.23.0->1.25.0github.com/klauspost/compressv1.18.0->v1.19.2github.com/nats-io/nkeysv0.4.7->v0.4.16golang.org/x/cryptov0.18.0->v0.55.0golang.org/x/sysv0.35.0->v0.47.0chore(deps): Update module github.com/nats-io/nats.go to v1.52.0to chore(deps): Update module github.com/nats-io/nats.go to v1.53.0chore(deps): Update module github.com/nats-io/nats.go to v1.53.0to chore(deps): Update module github.com/nats-io/nats.go to v1.53.1cb0bd977c5tocfbd71ffcfView command line instructions
Checkout
From your project repository, check out a new branch and test the changes.