[ENHANCEMENT] PR #506 handle unsigned long values in JetStream api data.
Revert performance fix due to high cpu during idle.
- [ENHANCEMENT] PR #472 / #477 benchmark improvements (@scottf)
- [ENHANCEMENT] PR #473 performance improvements(@scottf)
- [FIXED] PR #475 fixed filter subject (@scottf)
- [EXAMPLES] PR #478 Clarify examples with deliver subjects (@scottf)
- [ENHANCEMENT] PR #470 JsMultiTool and AutoBench Reporting Enhancements (@scottf)
- [ENHANCEMENT] PR #468 duplicates and orphans (@scottf)
- [FEATURE] PR #467 / #471 Heartbeat and Flow Control (@scottf)
- [FIXED] PR #466 JsMultiTool Queue Fix (@scottf)
JetStream Multi Tool enhancements and documentation
- [FIXED] Issue #340 No connection possible when using multiple servers PR #455 (@scottf)
- [FIXED] PR #451 Header status improvements (@scottf)
- [ENHANCEMENT] PR #452 handle no ack publishing (@scottf)
- [ENHANCEMENT] PR #456 switched to jnats-server-runner library (@scottf)
- [ENHANCEMENT] PR #446 improve cleanup of async responses (@scottf)
- [NON ISSUE] Issue #298 NatsConnection does not report SSL error (@scottf)
- [WILL NOT IMPLEMENT] Issue #272 Add ability to publish byte arrays with specified offset and length (@scottf)
- [DOCUMENTED] Issue #316 Failure creating a subscription on a (fairly) new connection (@scottf)
- [NON ISSUE] Issue #344 Performance issue when publishing to certain topics (@scottf)
- [WILL NOT IMPLEMENT] Issue #373 Why not netty for networking? (@sasbury)
- [PRE-RELEASE FEATURE REMOVED] Issue #388 In the jetstream subscriber examples... (@scottf)
- [DOCUMENTED] Issue #402 Unable to connect to NATS server via Android Studio
- [DOCUMENTED] Issue #445 NatsConnection.request(Message) does not use Message.replyTo (@scottf)
- [DOCUMENTED] Issue #423 createContext() not documented (@scottf)
- JetStream (message and management) support added.
- Miscellaneous bug fixes.
- Examples and benchmarks updated
- Improved unit tests with reusable scaffolding
- General Improvements
- [GENERAL] PR #358 Use OS Default SecureRandom (@scottf)
- [BUILD] Issue #360 Automatic-Module-Name clause added to jar manifest. (@bjorndarri)
- [BUILD] PR #365 gradle minor improvements, support windows (@scottf)
- [TEST] PR #375 fix test failing because of timeout that aren't testing timing (@scottf)
- [GENERAL] PR #380 Add a flushBuffer API (@ColinSullivan1)
- [GENERAL] PR #383 nuid speed improvements (@scottf)
- [GENERAL] PR #391 reconnect-jitter-handler-serverinfo-tests (@scottf)
- [JETSTREAM] Issue #335 Add Message Headers (@scottf)
- [GENERAL] Issue #336 Support no-responders (@scottf)
- [JETSTREAM] Issue #353 Jetstream APIS (@ColinSullivan1) (@scottf)
- [BUILD] Issue #355 Automatic module name (@bjorndarri)
- [GENERAL] Issue #377 Add a flushBuffer Connection API (@ColinSullivan1) Added in PR #380
- [JETSTREAM] Issue #393 Create Asynchronous Jetstream.Publish API (@scottf) Added in PR #398
- [JETSTREAM] Issue #396 Jetstream Consumer Delete API (@scottf) Added in PR #408
- [JETSTREAM] Issue #412 Add a JS management API to get consumer info (@scottf) Added in PR #413
- [FIXED] Issue #424 ERROR: Subject remapping requires Options.oldRequestStyle()... (@scottf)
- [FIXED] Issue #345 "unable to stop reader thread" log message (@ColinSullivan1) Fixed in PR #427
- [FIXED] Issue #310 NatsConnection.close unnecessarily sleeps for one second (@scottf)
- [COMMENTED] Issue #341 Why is a char[] more secure then a String for connection auth details? (@scottf)
- [OTHER] Issue #384 Validations on expectedLastSeqence, expectedStream and expectedLastMsgId are not working for jetstream producer (fixed by nats-server PR #1787)
- [ADDED] #323 Nats.connect v2 credentials (@olicuzo)
- [CHANGED] #320 Update MAINTAINERS.md (@gcolliso)
- [FIXED] #318 Printing trace when NUID initialization takes long (@matthiashanel)
- [FIXED] #327 Subject Remapping Fix (@brimworks)
- [FIXED] #331 Close connection when flush fails during drain (@matthiashanel)
- [FIXED] #330 Reconnect wait was not being honored (@ColinSullivan1)
- [FIXED] - #309 - Removed some debug printf statements
- [CHANGED] - Allow disable reconnect buffer by using size of zero
- [CHANGED] - Added option to set the max unsent size at the writer and fail or discard messages
- [CHANGED] - Updated build.gradle to not fail if TRAVIS_BRANCH isn't set
- [FIXED] - #274 - Added a check to prevent double event notification
- [CHANGED] - #276 - Updated TLS certs to match go client
- [FIXED] - #275 - Updated connect to randomize with the same code as reconnect
- [FIXED] - problem with jars being built with jdk 11
- [ADDED] - Automated deploy
- [FIXED] - #263 - Added server URLs to connect exception (not to auth exception)
- [FIXED] - #262 - Added @deprecated as needed
- [FIXED] - #261 - Added a static credentials implementation that uses char arrays
- [FIXED] - #260 - Moved to nats-server from gnatsd for testing
- [FIXED/CHANGED] - #259 - Double authentication errors from a server during reconnect attempts will result in the connection being closed.
- [FIXED] - #257 - Added connection method to messages that come from subscriptions, dispatchers and requests
- [FIXED] - #243 - Added check for whitespace in subjects and queue names
- [FIXED] - Improved a couple flaky tests
- [FIXED] - cleaned up use of "chain" instead of "creds"
- [FIXED] - #255 - added special ioexception when possible to indicate an authentication problem on connect
- [FIXED] - #252 - deprecated strings for username/pass/token and use char arrays instead, required changing some other code to CharBuffer
- [ADDED] - Openjdk11 to travis build and updated gradle wrapper to 5.5
- [ADDED] - an option to trace connect timing, including a test and example
- [FIXED/ADDED] - #197 - the ability to use a single dispatcher for multiple message handlers, including multiple subscriptions on a single subject
- [FIXED] - #244 - fixed an issue with parsing ipv6 addresses in the info JSON, added unit test for parser
- [FIXED] - #245 - fixed a timing bug in nats bench, now subscribers start timing at the first receive
- [FIXED/CHANGED] - #246 - fixed a confusing output from nats bench in CSV mode, now the test count and the total count are printed
- [ADDED] - spring cache to git ignore file
- [ADDED] - support for running nats bench with conscrypt
- [FIXED] - #239 - cleaned up extra code after SSL connect failure
- [FIXED] - #240 - removed stack trace that was left from debugging
- [FIXED] - #241 - changed method used to create an ssl socket to allow support for conscrypt/wildfly native libraries
- [ADDED] - conscrypt flag to natsautobench to allow testing with native library, requires Jar in class path
- [CHANGED] added back pressure to message queue on publish, this may effect behavior of multi-threaded publishers so moving minor version
- Clean up for rename to nats.java
- [FIXED] - #230 - removed extra executor allocation
- [FIXED] - #231 - found a problem with message ordering when filtering pings on reconnect, caused issues with reconnect in general
- [FIXED] - #226 - added more doc about ping intervals and max ping
- [FIXED] - #224 - resolved a latency problem with windows due to the cost of the message queues spinwait/lock
- [CHANGED] - started support for renaming gnatsd to nats-server, full release isn't done so using gnatsd for tests still
- [FIXED] - #223 - made SID public in the message
- [FIXED] - #227 - changed default thread to be non-daemon and normal priority, fixes shutdown issues
- [FIXED] - minor issue in javadoc that showed up when building on windows
- [ADDED] - test for fast pings and disconnect, duration.zero on nextMsg
- [CHANGED] - accepted pull request to replace explicit thread creation with executor
- [FIXED] - #217 - added check to "ignore" exceptions from reader during drain
- [CHANGED] - no longer call exception handler for "ignored" communication exceptions during close/drain after close occurs
- [ADDED] - #209 - support for comma separated urls in connect() or server()
- [FIXED] - #206 - incorrect error message when reconnect buffer is overrun
- [CHANGED] - #214 - moved to an executor instead of 1-off threads
- [FIXED] - #220 - an icky timing issue that could delay messages
- [CHANGED] - added larger TCP defaults to improve network performance
- [ADDED] - public method to create an inbox subject using the prefix from options
- [FIXED] - #203 & #204 - Fixed a thread/timing issue with writer and cleaning pong queues
- [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