- [FIXED] - #199 - turns out we had to hard code the manifest to remove the private package
- [ADDED] - support for JWT-based authentication and NGS
- [FIXED] - issue with norandomize server connect order, it was broken at some point
- [FIXED] #199 - import of a private package
- [FIXED] #195 - issue with "discovered" servers not having a protocol but we tried to parse as uri
- [FIXED] #186, #191 - sneaky issue with connection reader not reseting state on reconnect
- [ADDED] #192 - option to set inbox prefix, default remains the same
- [FIXED] #196 - updated all the versions i could find, and added note in gradle file about them
- [BREAKING CHANGE] Replaced use of strings for seeds and public keys in NKey code to use char[] to allow better memory security.
- [ADDED] Support for NKeys, and nonce based auth
- [FIXED] #181 - issue with default pending limits on consumers not matching doc
- [FIXED] #179 - added version variable for jars in build.gradle to make it easier to change
- [ADDED] Support for UTF8 subjects
- [FIXED] Issue with version in Nats.java, also updated deploying.md with checklist
- [FIXED] Fixed issue during reconnect where buffered messages blocked protocol messages
- [ADDED] Support for consumer or connection drain. (New API lead to version bump.)
- [FIXED] Fixed an issue with null pointer when ping/pong and reconnect interacted poorly.
- [FIXED] In a cluster situation the library wasn't using each server's auth info if it was in the URI.
- [CHANGED] Request now returns a CompletableFuture to allow more application async options
- [ADDED] Added back OSGI manifest information
- [ADDED] getLastError method to connection
- [ADDED/CHANGED] Implemented noEcho tests, and require the server to support noEcho if it is set
- [BREAKING CHANGE] Moved build to gradle
- [BREAKING CHANGE] Ground up rewrite to simplify and address API issues, API has changed
- [BREAKING CHANGE] Simplified connection API
- [CHANGED] Removed external dependencies
2017-02-09 GitHub Diff
- [FIXED] Flush wait interval (the amount of time the flusher waits before checking the flush queue) is once again set at 1ms.
- [FIXED] Do not shuffle entire pool when adding URL from INFO
- [ADDED] Connection name can now be accessed using
Connection#getName()
- [CHANGED] CI tests now run against both Oracle JDK 8 and OpenJDK 8
2017-02-02 GitHub Diff
- [ADDED]
Nats.connect()
and variants have been added as a preferred method for connecting to NATS.ConnectionFactory.createConnection()
will also continue to be supported. - [ADDED]
Connection#getServers()
andConnection#getDiscoveredServers()
APIs to match Go client - [ADDED]
isTlsRequired()
andisAuthRequired()
to match Go client capabilities. - [CHANGED] Methods that previously threw
TimeoutException
now simply returnnull
(for non-void
methods) or throwIOException
if their timeout elapses before they complete.ConnectionFactory#createConnection()
ConnectionImpl#flush(int timeout)
SyncSubscription#nextMessage(int timeout)
- returnsnull
if the timeout elapses before a message is available.
- [CHANGED] Several constant definitions have been moved to the
Nats
class.
2016-11-01 GitHub Diff
- FIXED #83 All thread pool executors are now properly shutdown by
Connection#close()
.
2016-10-30 GitHub Diff
- [NEW API]
Connection#publish(String subject, String reply, byte[] data, boolean flush)
allows the caller to specify whether a flush of the connection's OutputStream should be forced. The default behavior for the other variants of publish isfalse
. This was added to optimize performance for request-reply (used heavily injava-nats-streaming
). The internal flush strategy ofConnectionImpl
minimizes flush frequency by using a synchronized flusher thread to 'occasionally' flush. This benefits asynchronous publishing performance, but penalizes request-reply scenarios where a single message is published and then we wait for a reply. NatsBench
can now be configured via properties file (seesrc/test/resources/natsbench.properties
)
2016-10-19 GitHub Diff
- [BREAKING CHANGE]
SyncSubscription#nextMessage()
and its variants now throwInterruptedException
if the underlyingpoll
/take
operation is interrupted. - Fixed interrupt handling.
- Removed
Channel
implementation in favor of directly usingBlockingQueue
.
2016-10-11 GitHub Diff
- Implemented asynchronous handling of
INFO
messages, allowing the client to processINFO
messages that may be received from the server after a connection is already established. These asynchronousINFO
messages may update the client's list of servers in the connected cluster. - Added proper JSON parsing via google/gson.
- Cleaned up some threading oddities in
ConnectionImpl
- Moved async subscription threading mechanics into the
Connection
, similar to the Go client. - Fixed a number of inconsistencies in how subscription pending limits were handled.
- Removed subscription pending limits from
ConnectionFactory
. These should be set on the Subscription usingSubscription#setPendingLimits()
. ConnectionImpl
is nowpublic
, to avoid some issues with reflection in Java and reflective languages such as Clojure. Described further in #35 (special thanks to @mccraigmccraig).- #58 Updated
NUID
implementation to match the Go version - #48 Fixed an NPE issue in
TCPConnectionMock
when callingbounce()
(affects tests only). - #26 Fixed a problem with
AsyncSubscription
feeder thread not exiting correctly in all cases. - Updated integration tests to more closely reflect similar Go tests.
- Miscellaneous typo, style and other minor fixes.
2016-08-29 GitHub Diff
- Moved
nats_checkstyle.xml
out ofsrc
tree to avoid jar/bundle filtering
2016-08-29 GitHub Diff
- Depends on stable nats-parent-1.1.pom
- Excludes nats_checkstyle.xml from jar/bundle
- Downloads
gnatsd
binary for current arch/os totarget/
for test phase - Housekeeping changes to travis-ci configuration
2016-08-21 GitHub Diff
- Fixed a problem with gnatsd 0.9.2
connect_urls
breaking the client connect sequence. This field is now ignored. - Retooled the way that releases are shipped from Travis CI, using the
deploy:
clause and new scripts
2016-08-20 GitHub Diff
- Fixed a problem parsing Long from String on Android.
2016-08-10 GitHub Diff
- Reverted to Java 1.7 compatibility to avoid Android incompatibility
- Fixed an issue that was preventing TLS connections from reconnecting automatically.
- Fixed an issue with asynchronous subscriptions not terminating their feeder thread.
- Exposed pending limits APIs
- Updated examples to match Go client and added benchmark program
- Integrated NATS parent POM
- Integrated check style
- Integrated maven-bundle-plugin to provide OSGI compliant java-nats bundle
- Miscellaneous minor bug fixes and javadoc updates
_2016-04-03 GitHub Diff
- Removed a stray log trace statement in publish that was affecting performance.
2016-03-29 GitHub Diff
- Built on JDK 8
- Added NUID (a java implementation of http://github.com/nats-io/nuid), an entropy-friendly UUID generator that operates ~40 ns per op
- Connection#newInbox() now uses NUID to generate the unique portion of the inbox name
- Added support for pending byte/msg limits for subscriptions:
- Subscription#setPendingLimits(int msgs, int bytes)
- Made the size of the Connection reconnect (pending) buffer configurable with ConnectionFactory setters and getters
- Optimized parser performance
- Optimized parser handling of large message payloads
- ConnectionFactory will now construct a default URL by combining supplied host, port, user, and password if no URL is directly supplied.
- Fixed a couple of issues with misnamed properties
- Miscellaneous doc corrections/updates
2016-01-18 Initial public release of java-nats, now available on Maven Central.
- Added support for TLS v1.2
- Numerous performance improvements
- The DisconnectedEventHandler, ReconnectedEventHandler and ClosedEventHandler classes from the Alpha release have been renamed to DisconnectedCallback, ReconnectedCallback and ClosedCallback, respectively.
- Travis CI integration
- Coveralls.io support
- Increased test coverage