- #275/#281 - support separate Logger for each log level (thanks @crazyweave)
- #282 - consumer: reduce duplicate RDY (ready) count updates (thanks @andyxning)
- #283 - remove redundant Config initialized check (thanks @SwanSpouse)
- #313 - add Authorization header to lookup queries
- #321 - consumer: fix panic with some invalid lookupd http addresses (thanks @martin-sucha)
- #317 - producer: connect() code-style improvement (thanks @martin-sucha)
- #330 - fix random backoff jitter on 32-bit architectures
- #333 - consumer: re-use http client with keepalives for lookupd requests (thanks @JieTrancender)
- #336 - producer: shutdown logging prefix consistent with other logging (thanks @karalabe)
- #294 - docs: fix producer example (thanks @nikitabuyevich)
- #307 - docs: add exit signal handling to consumer example
- #324 - docs: fix Consumer.SetLogger() description (thanks @gabriel-vasile)
- #297 - add AUTHORS file
- #329/#330 - switch to GitHub Actions for CI
Thanks to @judwhite, @vitaliytv, and @HaraldNordgren for contributing to testing and dependency management improvements
- #248 - support go modules
- #249 - consumer: update RDY when setting MaxInFlight to 0
- #267 - check response message size is positive (thanks @andyxning)
- #271 - godoc for publisher and consumer (thanks @skateinmars)
- #270 - set log level (thanks @YongHaoWu)
- #255 - go vet tls.Config copying (thanks @iaburton)
Upgrading from 1.0.6: There are no backward incompatible changes.
- #97/#209 - consumer: retry nsqlookupd queries
- #179/#208 - consumer: redistribute RDY when connections are active
- #184/#201 - producer: fix misleading Stop() EOF (thanks @mengskysama)
- #203 - switch to golang/snappy (addressing potential snappy related deadlocks)
- #202 - consumer: fix backoff logging
Upgrading from 1.0.5: There are no backward incompatible changes.
- #175 - consumer: reduce garbage generation in DecodeMessage (thanks @Dieterbe)
- #162 - producer: support
DeferredPublish
(thanks @DanielHeckrath)
Upgrading from 1.0.4: There are no backward incompatible changes.
- #156 - consumer: prevent data race on RNG
- #155 - config: support
flag.Value
interface - #147/#150 - consumer: fix application of
max_backoff_duration
(thanks @judwhite) - #138 - fix lint, vet, fmt issues
- #137 - remove
go-simplejson
dependency
Upgrading from 1.0.3: There are no backward incompatible changes.
- #133 - fix
ErrNotConnected
race duringProducer
connection (thanks @jeddenlea) - #132 - fix
RDY
redistribution after backoff with no connections - #128 - fix backoff stall when using
RequeueWithoutBackoff
- #127 - fix handling of connection closing when resuming after backoff (thanks @jnewmano)
- #126 - allow
BackoffStrategy
to be set via flag (thanks @twmb) - #125 - add pluggable consumer
BackoffStrategy
; add full-jitter strategy (thanks @hden) - #124 - add
DialTimeout
andLocalAddr
config (thanks @yashkin) - #119 - add
Producer.Ping()
method (thanks @zulily) - #122 - refactor log level string handling
- #120 - fix
Message
data races onresponded
- #114 - fix lookupd jitter having no effect (thanks @judwhite)
Upgrading from 1.0.2: There are no backward incompatible changes.
- #104 - fix reconnect address bug (thanks @ryanslade)
- #106 - fix backoff reconnect deadlock (thanks @ryanslade)
- #107 - fix out-of-bounds error when removing nsqlookupd addresses (thanks @andreas)
- #108 - fix potential logger race conditions (thanks @judwhite)
- #111 - fix resolved address error in reconnect loop (thanks @twmb)
Upgrading from 1.0.1: There are no backward incompatible changes.
- #102 - TLS min/max config defaults (thanks @twmb)
- #99 - fix
Consumer.Stop()
race andProducer.Stop()
deadlock (thanks @tylertreat) - #92 - expose
Message.NSQDAddress
- #95 - cleanup panic during
Consumer.Stop()
if handlers are deadlocked - #98 - add
tls-min-version
option (thanks @twmb) - #93 - expose a way to get
Consumer
runtime stats (thanks @dcarney) - #94 - allow
#ephemeral
topic names (thanks @jamesgroat)
Upgrading from 1.0.0: There are no backward incompatible changes functionally, however this
release no longer compiles with Go 1.0.x
.
- #89 - don't spam connection teardown cleanup messages
- #91 - add consumer
DisconnectFrom*
- #87 - allow
heartbeat_interval
andoutput_buffer_timeout
to be disabled - #86 - pluggable
nsqlookupd
behaviors - #83 - send
RDY
beforeFIN
/REQ
(forwards compatibility with nsqio/nsq#404) - #82 - fix panic when conn isn't assigned
- #75/#76 - minor config related bug fixes
- #75/#77/#78 - add
tls-cert
andtls-key
config options
Upgrading from 0.3.7: The public API was significantly refactored and is not backwards compatible, please read UPGRADING.
- #58 - support
IDENTIFY
msg_timeout
- #54 - per-connection TLS config and set
ServerName
- #49 - add common connect helpers
- #43/#63 - more flexible
nsqlookupd
URL specification - #35 -
AUTH
support - #41/#62 - use package private RNG
- #36 - support 64 character topic/channel names
- #30/#38/#39/#42/#45/#46/#48/#51/#52/#65/#70 - refactor public API (see UPGRADING)
Upgrading from 0.3.6: There are no backward incompatible changes. THIS IS THE LAST STABLE RELEASE PROVIDING THIS API. Future releases will be based on the api in #30 and will not be backwards compatible!
This is a bug fix release relating to the refactoring done in 0.3.6
.
- #32 - fix potential panic for race condition when # conns == 0
- #33/#34 - more granular connection locking
Upgrading from 0.3.5: There are no backward incompatible changes.
This release includes a significant internal refactoring, designed to better encapsulate responsibility, see #19.
Specifically:
- make
Conn
public - move transport responsibilities into
Conn
fromReader
/Writer
- supply callbacks for hooking into
Conn
events
As part of the refactoring, a few additional clean exit related issues were resolved:
- wait group now includes all exit related goroutines
- ensure that readLoop exits before exiting cleanup
- always check messagesInFlight at readLoop exit
- close underlying connection last
Upgrading from 0.3.4: There are no backward incompatible changes.
This release includes a few new features such as support for channel
sampling and sending along a user agent string (which is now displayed
in nsqadmin
).
Also, a critical bug fix for potential deadlocks (thanks @kjk for reporting and help testing).
New Features/Improvements:
- #27 - reader logs disambiguate topic/channel
- #22 - channel sampling
- #23 - user agent
Bug Fixes:
- #24 - fix racey reader IDENTIFY buffering
- #29 - fix recursive RLock deadlocks
Upgrading from 0.3.3: There are no backward incompatible changes.
This is a bug fix release, notably potential deadlocks in Message.Requeue()
and Message.Touch()
as well as a potential busy loop cleaning up closed connections with in-flight messages.
New Features/Improvements:
- #14 - add
Reader.Configure()
- #18 - return an exported error when an
nsqlookupd
address is already configured
Bug Fixes:
- #15 - dont let
handleError()
loop if already connected - #17 - resolve potential deadlocks on
Message
responders - #16 - eliminate busy loop when draining
finishedMessages
Upgrading from 0.3.2: This release requires NSQ binary version 0.2.23+
for compression
support.
This release contains significant Reader
refactoring of the RDY handling code paths. The
motivation is documented in #1 however the commits in #8 identify individual changes. Additionally,
we eliminated deadlocks during connection cleanup in Writer
.
As a result, both user-facing APIs should now be considerably more robust and stable. Additionally,
Reader
should behave better when backing off.
New Features/Improvements:
- #9 - ability to ignore publish responses in
Writer
- #12 -
Requeue()
method onMessage
- #6 -
Touch()
method onMessage
- #4 - snappy/deflate feature negotiation
Bug Fixes:
- #8 -
Reader
RDY handling refactoring (race conditions, deadlocks, consolidation) - #13 - fix
Writer
deadlocks - #10 - stop accessing simplejson internals
- #5 - fix
max-in-flight
race condition
Upgrading from 0.3.1: This release requires NSQ binary version 0.2.22+
for TLS support.
New Features/Improvements:
- #227 - TLS feature negotiation
- #164/#202/#255 - add
Writer
- #186 -
MaxBackoffDuration
of0
disables backoff - #175 - support for
nsqd
config option--max-rdy-count
- #169 - auto-reconnect to hard-coded
nsqd
Bug Fixes:
- #254/#256/#257 - new connection RDY starvation
- #250 -
nsqlookupd
polling improvements - #243 - limit
IsStarved()
to connections w/ in-flight messages - #169 - use last RDY count for
IsStarved()
; redistribute RDY state - #204 - fix early termination blocking
- #177 - support
broadcast_address
- #161 - connection pool goroutine safety
Upgrading from 0.3.0: This release requires NSQ binary version 0.2.17+
for TOUCH
support.
- #119 - add TOUCH command
- #133 - improved handling of errors/magic
- #127 - send IDENTIFY (missed in #90)
- #16 - add backoff to Reader
Upgrading from 0.2.4: There are no backward incompatible changes to applications
written against the public nsq.Reader
API.
However, there are a few backward incompatible changes to the API for applications that directly use other public methods, or properties of a few NSQ data types:
nsq.Message
IDs are now a type nsq.MessageID
(a [16]byte
array). The signatures of
nsq.Finish()
and nsq.Requeue()
reflect this change.
nsq.SendCommand()
and nsq.Frame()
were removed in favor of nsq.SendFramedResponse()
.
nsq.Subscribe()
no longer accepts shortId
and longId
. If upgrading your consumers
before upgrading your nsqd
binaries to 0.2.16-rc.1
they will not be able to send the
optional custom identifiers.
- #90 performance optimizations
- #81 reader performance improvements / MPUB support
- #69 added IsStarved() to reader API
- #64 timeouts on reader queries to lookupd
- #54 fix crash issue with reader cleaning up from unexpectedly closed nsqd connections
- Initial public release