# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). ## [2.2.4] - 2023-02-27 ### Added - Include `groupId` in debug log when failing to find group coordinator #1522 ### Fixed - Rejoin group after ILLEGAL_GENERATION error #1474 - Fix consumer getting stuck after very brief throttling #1532 - Prevent infinite crash loop when no brokers are available #1408 ## [2.2.3] - 2022-11-21 ### Fixed - Fix regression in SASL/PLAIN authentication #1480 ## [2.2.2] - 2022-10-18 ### Fixed - Fix compatibility with AWS MSK Serverless #1463 ## [2.2.1] - 2022-10-13 ### Fixed - Fixed Typescript definitions for custom authentication mechanisms #1459 ## [2.2.0] - 2022-08-16 ### Added - Add the ability to inject custom authentication mechanisms #1372 - Add admin methods `alterPartitionReassignments` & `listPartitionReassignments` #1419 ### Fixed - Fix deprecation warning when connecting to a broker over TLS via IP address #1425 - Improve consumer performance when subscribed to thousands of topics #1436 ## [2.1.0] - 2022-06-28 ### Added - Add `pause` function to `eachMessage`/`eachBatch` to pause the current topic-partition #1364 - The `KafkaMessage` type is now a union between the pre-Kafka 0.10 message format and the current #1401 ### Fixed - Fix 100% CPU utilization when all brokers are unavailable #1402 - Fix persistent error when trying to produce after a topic authorization error #1385 - Fix error when aborting or committing an empty transaction #1388 - Don't re-process messages from a paused partition after breaking the consumption flow #1382 ## [2.0.2] - 2022-05-31 ### Fixed - Fix `consumer.seek` when seeking on multiple partitions for the same topic #1378 ## [2.0.1] - 2022-05-23 ### Fixed - Fix members leaving the group after not being assigned any partitions #1362 - Make `REPLICA_NOT_AVAILABLE` retriable #1351 - Document `admin.createTopics` respecting cluster default partitions number and replication factor #1360 ## [2.0.0] - 2022-05-06 This is the first major version released in 4 years, and contains a few important breaking changes. **A [migration guide](https://kafka.js.org/docs/migration-guide-v2.0.0) has been prepared to help with the migration process.** Be sure to read it before upgrading from older versions of KafkaJS. ### Added - Validate configEntries when creating topics #1309 - New `topics` argument for `consumer.subscribe` to subscribe to multiple topics #1313 - Support duplicate header keys #1132 ### Removed - **BREAKING:** Drop support for Node 10 and 12 #1333 - **BREAKING:** Remove deprecated enum `ResourceTypes` #1334 - **BREAKING:** Remove deprecated argument `topic` from `admin.fetchOffsets` #1335 - **BREAKING:** Remove deprecated method `getTopicMetadata` from admin client #1336 - **BREAKING:** Remove typo type `TopicPartitionOffsetAndMedata` #1338 - **BREAKING:** Remove deprecated error property originalError. Replaced by `cause` #1341 ### Changed - **BREAKING:** Change default partitioner to Java compatible #1339 - Improve consumer performance #1258 - **BREAKING:** Enforce request timeout by default #1337 - **BREAKING** Honor default replication factor and partition count when creating topics #1305 - Increase default authentication timeout to 10 seconds #1340 ### Fixed - Fix invalid sequence numbers when producing concurrently with idempotent producer #1050 #1172 - Fix correlation id and sequence number overflow #1310 - Fix consumer not restarting on retriable connection errors #1304 - Avoid endless sleep loop #1323 ## [1.16.0] - 2022-02-09 ### Added - Allow manual heartbeating from inside `eachMessage` handler #1255 - Add `rebalancing` consumer event #1067 #1079 - Add overload typings for all event types #1202 - Return `configSource` in `admin.decribeConfigs` #1023 - Add `topics` property to `admin.fetchOffsets` to fetch offsets for multiple topics #992 #998 - Improve error output from `admin.createTopic` #1104 - Export Error classes #1254 - Validate `brokers` list contains strings #1284 - Throw error when failing to stop or disconnect consumer #960 ### Changed - Don't commit offsets from `consumer.seek` when `autoCommit` is `false` #1012 - Do not restart the consumer on non-retriable errors #1274 - Downgrade consumer rebalance error log to `warn` #1279 - Make default round-robin partitioner topic-aware #1112 ### Fixed - Fix `offset` type of `consumer.seek` #981 - Fix crash when used in Electron app built with electron-builder #984 - Improve performance of Fetch requests #985 - Fix crash when using topics with name of built-in Javascript functions #995 - Fix type of consumer constructor to require config object #1002 - Fix message type to allow `null` key #1037 - Respect `heartbeatInterval` when invoking `heartbeat` concurrently #1026 - Fix type of `timestamp` of `LoggerEntryContent` to be string #1082 - Fix return type of `admin.describeAcls` #1118 - Fix consumer getting stuck in `DISCONNECTING` state if in-flight requests time out during disconnect #1208 - Fix failed serialization of BigInts when logging #1234 - Fix crash when committing offsets for a topic before consumer initialization #1235 - Reauthenticate to all brokers on demand #1241 - Remove unnecessary warn log when calling `admin.deleteTopicRecords` with offset `-1` #1265 - Handle empty control batches #1256 - Send empty topic array as null when fetching metadata #1184 ## [1.15.0] - 2020-11-24 ### Added - Initial work for static membership #888 - Add consumer instrumentation event: received unsubscribed topics #897 - Add option for `admin.fetchOffsets` to resolve the offsets #895 - Add ACL functions to admin client #697 - Add `admin.deleteTopicRecords` #905 - Emit `GROUP_JOIN` event on stale partition assignments #937 ### Changed - Added properties to error classes typescript types #900 - Make header value type definition possibly undefined #927 - Bump API versions for client-side throttling #933 - Add `UNKNOWN_TOPIC_OR_PARTITION` check for `addMultipleTargetTopics` #938 ### Fixed - Fix describe/alter broker configs (introduced `ConfigResourceTypes`) #898 - Fix record batch compression masking (fix ZSTD compression) #912 - Prevent inflight's correlation id collisions #926 - Fix ACL, ISocketFactory and SaslOptions type definitions #941 #959 #966 - Fix deadlock on the connection `onError` handler #944 - Fix deadlock on the connection `onTimeout ` handler #956 - Remove nested retriers from producer #962 (fixes #958 #950) ## [1.14.0] - 2020-09-21 ### Added - Support Produce v6 protocol #869 - Support Produce v7 protocol (support for ZSTD compression) #869 - Broker rediscovery with config.brokers parameter taking a callback function #854 #882 ### Changed - Remove long.js in favor of BigInt #663 - Remove allowExperimentalV011 flag #847 ### Fixed - Only commit offsets on eachMessage failures if autoCommit is enabled #866 - Fix consumer offsets not committed if consumer stop was invoked right after the batch process #874 - Remove brokers with closed connections from the brokers list #878 - Type improvements and fixes #877 ## [1.13.0] - 2020-09-10 ### Added - Add listGroup method to admin interface #645 - Add describeCluster method to admin client #648 - Add createPartitions method to admin client #661 - Add deleteGroups method to admin client #646 - Add listTopics method to admin client #718 - Add describeGroups method to admin client #742 - Allow to handle consumer retry failure at the user level #643 - Support Fetch v8 protocol (including client-side throttling) #776 - Support Fetch v9 protocol #778 - Support Fetch v10 protocol #792 - Support Fetch v11 protocol #810 - Support JoinGroup v3 and v4 protocol #801 - Oauthbearer support #680 - Add new protocol errors #824 - Add versioning to docs #835 - Add fetch topic offsets by timestamp #604 - Support LOG_APPEND_TIME record timestamps #838 - Suppress JoinGroup V4+ response error log when memberId is empty #860 ### Changed - Replace fetch promise all with async generator #570 - Improve balance in the RoundRobinAssigner #635 - Add single requestTimeout runner instead of setTimeout per request #650 - Provide the subscribed topics to the protocol() function #545 - Only wait for the lock when there are enqueued batches #670 - Update consumer default retries to 5 #720 (related to #719) - Simplify and speed up SeekOffsets #668 - Remove maxInFlight option from default retry and moved into Producer ad Consumer #754 - Use addMultipleTargetTopics instead of looping over multiple calls to addTargetTopic #748 - Only disconnect the consumer and producers if they were created #784 - Resolve socket requests without response immediately when they have been queued #785 - Move default request timeout from connection to cluster #739 - Simplify the BufferedAsyncIterator #671 - Ensure fair fetch response allocation across topic-partitions #859 ### Fixed - Type improvements and fixes #636 #664 #675 #722 #729 #758 #799 #813 #757 #749 #764 #828 #843 #839 - Remove invalid topics from targetTopics on INVALID_TOPIC_EXCEPTION #666 - Fix network buffering performance problems #669 - Delete the entry for the waiter when the timeout is reached #694 - Fix encoder instanceof issue with Encoder #685 - Fix default retry for consumer #719 - Runner#waitForConsumer uses consuming stop event instead of timers #724 - Fix unhandled rejections #714 #797 - Make Array shuffle test pass in Node >= 11.0.0 #740 - Use setImmediate when scheduling calls of scheduleFetch #752 - Improve offset commit handling #775 - Use the length from the message to pre-allocate the result array #771 - Fix application lock in case of errors before the connection is established #780 - Add isNaN check for concurrency limit #787 - Fix admin client createTopics timeout #800 - Avoid repeated costly copies of buffers when working with encoders #811 - Fix fall-back retry config for producer #851 ## [1.12.0] - 2020-01-30 ### Added - Force refresh of metadata when topic is not present #556 - Expose ConsumerRunConfig type #615 - Randomize order of seed brokers #632 ### Changed - Support TLS SNI by default #512 - Changed typing of `logLevel` argument of `logCreator` #538 - Add type boolean in ssl KafkaConfig #557 - Allow logging Fetch response payload buffers #573 - Remove default null for logCreator #595 - Add error names to ensure error names work with webpack + uglify #602 - Merge TopicMessages by topic in producer sendBatch #626 ### Fixed - Skip control records without auto-resolve #511 - Handle empty member assignment #567 - Only fetch for partitions with initialized offsets #582 - Get correct next offset for compacted topics #577 - TS type definition for removing instrumentation event listeners #608 - Fixed IHeaders definition to accept plain strings #547 - Make TS type ProducerBatch fields optional #610 - Fix typings for logger getters #620 ## [1.11.0] - 2019-09-30 ### Added - Add Typescript SASLMechanism type to definitions #477 - Allow SASL Connections to Periodically Re-Authenticate #496 ### Changed - Throw validation error when the broker list is empty #460 - Improve the encoder to avoid copying unnecessary bytes #471 - Throw an error on subscription changes for running consumers #470 - Default `throttle_time_ms` to 0 if missing in `ApiVersions` response #495 - Remove normalisation of the password when using SCRAM mechanism #505 ### Fixed - Fix built-in partitioners type definition error #455 - Detect replaced brokers on refresh metadata #457 - Make NodeJS REPL get correct `randomBytes()` #462 - Fix `IHeaders` type definition (from string to Buffer) #467 - Rename Typescript definitions from `ResourceType` to `ResourceTypes` #468 - Update Typescript definitions to make `configNames` optional in `ResourceTypes` #474 - Fix `transactionState.ABORTING` value #478 ## [1.10.0] - 2019-07-31 ### Added - Allow the consumer to pause and resume individual partitions #417 - Add `consumer.commitOffsets` for manual committing #436 - Expose consumer paused partitions #444 ### Changed - Removed unnecessary async code #434 - Use SubscriptionState to track member assignment #429 ### Fixed - Improve type compatibility with @types/kafkajs #416 - Fix `fetchTopicMetadata` return type #433 ## [1.9.3] - 2019-06-27 ### Fixed - Fix AWS-IAM mechanism name #411 #412 - Fix TypeScript types for topic subscription with RegExp #413 ## [1.9.2] - 2019-06-26 ### Fixed - Fix typescript types for Logger, consumer pause and resume, eachMessage and EachBatch interfaces #409 ## [1.9.1] - 2019-06-25 ### Fixed - Fix typescript types for SSL, SASL and batch #407 ## [1.9.0] - 2019-06-25 ### Added - Add typescript declaration file #362 #385 #390 - Add `requestTimeout` to apiVersions #369 - Discard messages saw a seek operation during a fetch or batch processing #367 - Include fetched offset metadata retrieved with `admin.fetchOffsets` #389 - Allow offset metadata to be written as part of OffsetCommit requests #392 - Prevent the consumption of messages for topics paused while fetch is in-flight #397 - Add `AWS-IAM` SASL mechanism #402 - Add `batch.offsetLagLow` #405 ### Changed - Don't modify `global.crypto` #365 - Change log level about producer without metadata #382 - Update encoder to write arrays as single `Buffer.concat` where possible #394 ### Fixed - Log error message on connection errors #400 - Make sure runner has connected brokers and fresh metadata before it starts #404 ## [1.8.1] - 2019-06-25 ### Fixed - Make sure runner has connected brokers and fresh metadata before it starts #404 ## [1.8.0] - 2019-05-13 ### Added - Add partition-aware concurrent mode for `eachMessage` #332 - Add `JavaCompatiblePartitioner` #358 - Add `consumer.subscribe({ topic: RegExp })` #346 - Update supported protocols to latest of Kafka 1 #343 #347 #348 ### Changed - Add documentation link to `REBALANCE_IN_PROGRESS` error #341 ### Fixed - Fix crash on offline replicas in metadata v5 response #350 ## [1.7.0] - 2019-04-12 ### Fixed - Improve compatibility with terserjs #338 ### Added - Add `admin#fetchTopicMetadata` #331 ### Changed - Deprecated `admin#getTopicMetadata` #331 - `admin#fetchTopicOffsets` returns the low and high watermarks #333 ## [1.6.0] - 2019-04-01 ### Added - Allow providing a socketFactory on client creation #263 - Add fetchTopicOffsets method #314 ## [1.5.2] - 2019-04-01 ### Fixed - Process a fixed number of lock releases per iteration on `lock#release` #323 ### Changed - Use the max between the default request timeout and the protocol override #318 - Only emit events if there are listeners #321 ## [1.5.1] - 2019-03-14 ### Fixed - Handle `null` keys on isAbortMarker #312 ### Changed - Prevent subsequent calls to `consumer#run` to override the running consumer #305 - Improve browser compatibility #300 - Add custom `requestTimeout` for protocol fetch #310 - Make `requestTimeout` optional, the current implementation is behind the flag `enforceRequestTimeout` #313 ## [1.5.0] - 2019-03-05 ### Changed - See `1.5.0-beta.X` versions ## [1.5.0-beta.4] - 2019-02-28 ### Fixed - Abort old transactions on protocol error `CONCURRENT_TRANSACTIONS` #299 ## [1.5.0-beta.3] - 2019-02-20 ### Fixed - Missing default restart time on crashes due to retriable errors #283 - Add custom requestTimeout for JoinGroup v0 #293 - Fix propagation of custom retry configs #295 ### Changed - Allow calling `Producer.sendBatch` with empty list #287 - Encode non-buffer key as string by default #291 ## [1.5.0-beta.2] - 2019-02-13 ### Fixed - Handle undefined message key when producing with 0.11 #247 - Fix consumer restart on find coordinator errors #253 - Crash consumer on codec not implemented error #256 - Fix error message on invalid username or password #270 - Restart consumer on crashes due to retriable error #269 - Remove deleted topics from the cluster target group #273 ### Changed - Change Node engine requirement to >=8.6.0 #250 - Don't include lockfile and vscode files in package #264 ### Added - Allow configuring log level at runtime #278 ## [1.5.0-beta.1] - 2019-01-17 ### Fixed - Rolling upgrade from 0.10 to 0.11 causes unknown magic byte errors #246 ### Changed - Validate consumer groupId #244 ### Added - Expose network queue size event to consumers, producers and admin #245 ## [1.5.0-beta.0] - 2019-01-08 ### Changed - Add transactional attributes to record batch #199 - Ignore control records #208 - Filter aborted messages on the consumer #223 #210 #228 - Make Round robin assigner forward `userdata` #231 ### Added - Protocol `FindCoordinator` v1 #189 - Protocol `InitProducerId` v0 #190 - Protocol `AddPartitionsToTxn` v0 #191 - Protocol `AddOffsetsToTxn` v0 #194 - Protocol `TxnOffCommit` v0 #195 - Protocol `EndTxn` v0 #198 - Protocol `ListOffsets` v1 and v2 #217 #209 - Accept max in-flight requests on the connection #216 - Idempotent producer #203 - Transactional producer #206 - Protocol `SASLAuthenticate` #229 - Add SendOffsets to consumer `eachBatch` #232 - Add network instrumentation events #233 - Allow users to provide offsets to the `commitOffsetsIfNecessary` #235 ## [1.4.8] - 2019-02-18 ### Fixed - Handle undefined message key when producing with 0.11 #247 - Fix consumer restart on find coordinator errors #253 - Crash consumer on codec not implemented error #256 - Fix error message on invalid username or password #270 ## [1.4.7] - 2019-01-17 ### Fixed - Rolling upgrade from 0.10 to 0.11 causes unknown magic byte errors #246 ## [1.4.6] - 2018-12-03 ### Fixed - Always assign partitions based on subscribed topics #227 ## [1.4.5] - 2018-11-28 ### Fixed - Fix crash in mitigation for receiving metadata for unsubscribed topics #221 ### Added - Add `CRASH` instrumentation event for the consumer #221 ## [1.4.4] - 2018-10-29 ### Fixed - Protocol produce v3 wasn't filtering `undefined` timestamps and was sending timestamp 0 (`NaN` converted) for all messages #188 ## [1.4.3] - 2018-10-22 ### Changed - Version `1.4.2` without test files ## [1.4.2] - 2018-10-22 ### Changed - Allow messages with a value of `null` to support tombstones #185 ## [1.4.1] - 2018-10-17 ### Fixed - Decode multiple RecordBatch on protocol Fetch v4 #179 - Skip incomplete record batches #182 - Producer with `acks=0` never resolve #181 ### Added - Runtime flag for displaying buffers in debug output #176 - Add ZSTD to compression codecs and types #157 - Admin get topic metadata #174 ### Changed - Add description to lock instances #178 ## [1.4.0] - 2018-10-09 ### Fixed - Potential offset loss when updating offsets for resolved partitions #124 - Refresh metadata on lock timeout #131 - Cleans up stale brokers on metadata refresh #131 - Force metadata refresh on `ECONNREFUSED` #134 - Handle API version not supported #135 - Handle v0.10 messages on v0.11 Fetch API #143 ### Added - Admin delete topics #117 - Update metadata api and allow to disable auto topic creation #118 - Use highest available API version #135 #146 - Admin describe and alter configs #138 - Validate message format in producer #142 - Consumers can detect that a topic was updated and force a rebalance #136 ### Changed - Improved stack trace for `KafkaJSNumberOfRetriesExceeded` #123 - Enable Kafka v0.11 API by default #141 (Can still be disabled with `allowExperimentalV011=false`) - Replace event emitter Lock #154 - Add member assignment to `GROUP_JOIN` instrumentation event #136 ## [1.3.1] - 2018-08-20 ### Fixed - Client logger accessor #106 - Producer v3 decode format #114 - Parsing multiple responses #115 - Fetch v4 for partial messages on record batch #116 ### Added - Connection instrumentation events #110 ## [1.3.0] - 2018-08-06 ### Fixed - Skip unsubscribed topic assignment #86 - Refresh metadata when producing to a topic without metadata #87 - Discard messages with a lower offset than requested #100 ### Added - Add consumer auto commit policies #89 - Notify user when setting heartbeat interval to same or higher than session timeout #91 - Constantly refresh metadata based on `metadataMaxAge` #94 - New instrumentation events #95 - Expose loggers #97 #102 - Add offset management operations to the admin client #101 - Support to record batch compression #103 - Handle missing username/password during authentication #104 ## [1.2.0] - 2018-07-02 ### Fixed - Make sure authentication handshake remains consistent event when `broker.connect` is called concurrently #81 ### Added - Add `producer.sendBatch` to produce to multiple topics at once #82 - Experimental support to native Kafka 0.11 (`allowExperimentalV011`) #61 #68 #75 #76 #78 - Enabled protocol `fetch` v3 ## [1.1.0] - 2018-06-14 ### Added - Support to SASL SCRAM (`scram-sha-256` and `scram-sha-512`) #72 - Admin client with support to create topics #73 ## [1.0.1] - 2018-05-18 ### Fixed - Prevent crash when re-producing after metadata refresh #62 ## [1.0.0] - 2018-05-14 ### Changed - Updated readme ## [0.8.1] - 2018-04-10 ### Fixed - Throw unretriable error for incompatible message format #49 - Producer can't reconnect after broker disconnection #48 ## [0.8.0] - 2018-04-05 ### Removed - Backwards compatibility with the old member assignment protocol (<= 0.6.x). __v0.7.x__ is the last version with support for both protocols (commit f965e91cf883bff74332e53a8c1d25c2af39e566) ### Fixed - Only retry failed brokers #38 ### Changed - Use selected assigner on consumer sync #35 - Add validations to consumer subscribe and producer send #41 ### Added - Consumer pause and resume #41 - Allow `partitionAssigners` to be configured - Allow auto-resolve to be disabled for eachBatch #44 ## [0.7.1] - 2018-01-22 ### Fixed - Fix member assignment protocol #33 ## [0.7.0] - 2018-01-19 ### Fixed - Fix retry on error for message handlers #30 ### Changed - Use decoder offset for validating response length #21 - Change log creator to improve interoperability #24 - Add support to `KAFKAJS_LOG_LEVEL` #24 - Improved assigner protocol #27 #29 ### Added - Add seek API to consumer #23 - Add experimental describe group to consumer #31 ## [0.6.8] - 2017-12-27 ### Fixed - Only use seed brokers to bootstrap consumers (introduced a broker pool abstraction) #19 - Don't include the size of the size field when determining if the buffer has enough bytes to read the full response #20 ## [0.6.7] - 2017-12-18 ### Fixed - Don't throw KafkaJSOffsetOutOfRange on every protocol error ## [0.6.6] - 2017-12-15 ### Fixed - Fix index out of range errors when decoding partial messages #11 - Don't rely on seed broker for finding group coordinator #13 ## [0.6.5] - 2017-12-14 ### Fixed - Fix partial message decode #10 - Throw not implemented error for Snappy and LZ4 compression #10 - Don't crash when setting offsets to default #10 ## [0.6.4] - 2017-12-13 ### Added - Add stack trace to connection error logs ### Changed - Skip consumer callback error logs for kafkajs errors ### Fixed - Use the connection timeout callback for socket timeout - Check if still connected before writing to the socket ## [0.6.3] - 2017-12-11 ### Added - Add error logs for user errors in `eachMessage` and `eachBatch` ### Fixed - Recover from rebalance in progress when starting the consumer ## [0.6.2] - 2017-12-11 ### Added - Add `logger: "kafkajs"` to log lines ## [0.6.1] - 2017-12-08 ### Added - Add latest Kafka error codes ### Fixed - Add fallback error for unsupported error codes ## [0.6.0] - 2017-12-07 ### Added - Expose consumer group `isRunning` to `eachBatch` - Add `offsetLag` to consumer batch ## [0.5.0] - 2017-12-04 ### Added - Add ability to subscribe to events (heartbeats and offsets commit) #4 ## [0.4.1] - 2017-11-30 ### Changed - Add heartbeat after each message - Update default heartbeat interval to a better value ### Fixed - Accept all consumer properties from create consumer ## [0.4.0] - 2017-11-23 ### Added - Commit previously resolved offsets when `eachBatch` throws an error - Commit previously resolved offsets when `eachMessage` throws an error - Consumer group recover from offset out of range ## [0.3.2] - 2017-11-23 ### Fixed - Stop consuming messages when the consumer group is not running ## [0.3.1] - 2017-11-20 ### Fixed - NPM bundle (add .npmignore) - Fix package.json reference to main file ## [0.3.0] - 2017-11-20 ### Added - Add cluster method to fetch offsets for a list of topics - Add offset resolution to the consumer group ### Changed - Rename protocol Offsets to ListOffsets - Update cluster fetch topics offset to allow different configurations per topic - Create different instances of the cluster for producers and consumers ### Fixed - Fix the use of timestamp in the ListOffsets protocol - Fix create topic script - Prevent unnecessary reconnections on cluster connect ## [0.2.0] - 2017-11-13 ### Added - Expose consumer groups - Message and MessageSet V0 and V1 decoder - Protocol fetch V0, V1, V2 and V3 - Protocol find coordinator V0 - Protocol join group V0 - Protocol sync group V0 - Protocol leave group V0 - Protocol offsets V0 - Protocol offset commit V0, V1 and V2 - Protocol offset fetch V1 and V2 - Protocol heartbeat V0 - Support to compressed message sets in protocol fetch - Add find coordinator group to cluster - Set timestamp for compressed messages - Travis integration - Eslint and prettier ### Changed - Throw an error when cluster findBroker doesn't find a broker - Move `KafkaProtocolError` to errors file - Convert encode, decode and parse to async functions - Update producer to use async compressor - Update fetch to use async decompressor - Create a separate error class for SASL errors - Accepts a list of brokers instead of host and port - Move retry logic out of connection and create namespaces for the logger - Retry when refresh metadata throws leader not available ### Fixed - Fix broker maxWaitTime default value - Take OS differences when asserting gzip results - Clear the connection timeout when the connection ends or fails due to an error ## [0.1.2] - 2017-10-17 ### Added - Expose if the cluster is connected ### Fixed - Reconnect the cluster if it is not connected when producing messages - Throw error if metadata is still not loaded when finding the topic partition - Refresh metadata in case it is not loaded - Make connection throw a retriable error when not connected ## [0.1.1] - 2017-10-16 ### Changed - Only retry retriable errors - Propagate clientId and connectionTimeout to Cluster ### Fixed - Typo when loading the SASL Handshake protocol ## [0.1.0] - 2017-10-15 ### Added - Producer compatible with Kafka 0.10.x - GZIP compression - Plain, SSL and SASL_SSL implementations - Published on Github