This release uses a new consumer create API when interacting with nats-server version 2.9.0 or higher. This changes the subjects used by the client to create consumers, which might in some cases require changes in access and import/export configuration. To opt out of this feature, use UseLegacyDurableConsumers() option when creating JetStreamContext.
Added
JetStream:
Support for enhanced stream purge. PurgeStream() now accepts StreamPurgeRequest as an option, allowing partial purge by subject sequence number or keeping selected number of messages (#988)
Option to fetch DeletedDetails when fetching StreamInfo. StreamInfo() now accepts StreamInfoRequest allowing to pass DeletedDetails flag (#990)
Option to report subjects on StreamInfo() request. StreamInfo() now accepts StreamInfoRequest allowing to pass SubjectsFilter value (#1010)
Support AllowDirect in stream configuration, enabling faster access to individual messages on a stream (#991)
Support for DirectGet API in GetMsg() through DirectGet() and DirectGetNext() options (#1020, #1030)
HeadersOnly option to RePublish field on stream configuration and change struct name to RePublish (#991)
SecureDeleteMsg() method to securely delete and overwrite a message on a stream (#1025)
MaxRequestMaxBytes()PullConsumer() option allowing setting the maximum number of bytes a single Fetch()can receive (#1043)
Filter streams and stream names by subject in StreamsInfo() and StreamNames() using StreamListFilter() option (#1062)
Accept AckAll for pull consumers. Thanks to @neilalexander for the contribution (#1063)
Support for setting consumer replicas through Subscribe() options. Thanks to @goku321 for the contribution (#1019)
Support for setting memory storage on consumer with ConsumerMemoryStorage() option in Subscribe(). Thanks to @goku321 for the contribution (#1078)
KV:
RePublish option on key value configuration (#1031)
ObjectStore:
ObjectStores() and ObjectStoreNames() methods for listing object store buckets (#1074)
TLSConnectionState() to expose TLS connection state (#996)
UserJWTAndSeed helper function accepting JWT and seed as parameters (#1046)
natsProtoErr type for proto error normalization and comparison using errors.Is() (#1082)
Improved
JetStream
Add JetStreamError type for all JetStream related errors, containing error codes (for API errors). JetStreamError supports comparing and unwrapping errors using native errors package (#1044, #1047)
Force Subscribe() to use memory storage and no replicas when using OrderedConsumer() (#989)
Consistent error value of context timeout when using Fetch() on pull subscription. Thanks to @wdhongtw for the contribution (#1011)
Add additional note to PullSubscribe() on durable semantics (#994)
KV:
Utilize DirectGet() in KV for improved performence (#1020)
Add support for reporting flusher errors. THanks to @GeorgeEngland for the contribution (#1015)
Mention field defaults in Options struct documentation. Thanks to @costela for the contribution (#1013)
Changed
JetStream:
DeleteMsg() now uses NoErase option by default, not overwriting the message on stream (only marking it as deleted) (#1025)
... (truncated)
Commits
715a591 Merge pull request #1086 from nats-io/release/v1.17.0
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps github.com/nats-io/nats.go from 1.16.0 to 1.17.0.
Release notes
Sourced from github.com/nats-io/nats.go's releases.
... (truncated)
Commits
715a591
Merge pull request #1086 from nats-io/release/v1.17.0da6ca62
Release v1.17.02930f1c
[UPDATED] Add tests for calculating object digest (#1076)3c209f5
[UPDATED] Adjust consumer creation to nats-server v2.9.0 (#1080)72a9635
Merge pull request #1072 from nats-io/jnm/implement_server_PR_345465796fc
[CHANGED] StreamInfo() will now return all subjects when requested866ce08
[ADDED] Option to set memory storage to true for a consumer (#1078)caf5af2
Merge pull request #1082 from nats-io/auth-error-is51ba8b3
Allow updating meta if new name exists but is deleted (#1053)225c557
[ADDED] Listing buckets and bucket names (#1074)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)