All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Correct version number in
src/amqp-base-client.ts
The version number was not updated in src/amqp-base-client.ts
for this release.
- Support for clients to negotiate channel-max (#86)
- Raise when WebSocket is not cleanly closed (#80)
- Make logging configurable (#79)
- Support for connection.update-secret (#77)
- Channel max 0 should be treated as "unlimited" not 0 (#86)
- Close sockets not supporting amqp protocol (#78)
- Throws and rejects with
Error
as per best practice (#81) - Clean ups (#88, #85)
- Package improvements for bundling and tree-shaking (#75)
- New overload for
AMQPWebSocketClient
constructor to allow setting optional parameters through an init object (#71)
- Call socket.destroy() when closing socket to fix intermitent condition where onerror is called when conn is closed by client (#72)
- Pass the correct array buffer to dataview when reading framesize (related to #55)
- Raise
AMQPError
whenchannelMax
is reached (fixes #43) - Add
Channel#onerror
callback (fixes #40) - Correctly handle frame headers split across reads in the WebSocket client (#68, fixes #55)
- Breaking change: Removed support for end-of-life versions of Node.js. A minimum of Node.js 16 is now required. (#70)
- Custom TlsOptions can be passed to the constructor, like:
new AMQPClient(url, { cert, "", key: "", ca: "" })
- AMQPClient#onerror, will be called whenever ther connection is closed, override it to create reconnect logic.
- Export types for queue, exchange and consume parameters
- Only skip TLS certificate validation if the
insecure
query parameter is included in the URL - Use a pool of buffers so that multiple microtasks can publish simultaneously
- Don't set an IP as SNI hostname, only proper hostnames
- Decode username/password in URL properly
- Allow publishing of
null
and let AMQPMessage#body be null when a body is missing
- Heartbeat support
- Channel#closed is now a public property
- Frame errors because frame buffer was reused
- Frame errors because frame buffer was reused
- Don't depend on TextEncoder in AMQPMessage
- Explicit return types on all methods for faster typescript compilation
- No default exports, only named:
import { AMQPClient } from "@cloudamqp/amqp-client"
- Much improved browser bundling support (webpack)
- Support basicCancel send from server, AMQPConsumer#wait() will throw an Error if it happens.
- Support custom frameMax values, by URL: amqp://localhost/vhost?frameMax=8192
- Websocket client now supports parsing AMQP frames split over multiple WebSocket frames (could happen with high throughput via websocket-tcp-relay).
- 67% increased publish rate, by reusing frame buffer
- Use Buffer for string encoding/decoding for >100% performance boost
- Use 4096 frameMax for smaller and faster allocations (down from 16KB)
- Reraise RangeErrors with more debug information
- Rewrite in TypeScript
- Queue purged never resolved
- Logging when connection is blocked/unblocked by server
- tls/net.socket onread is buggy in nodejs 16, revert to 'data' event for parsing frames
- nodejs version expanded to 12
- 128KB read buffer
- Avoid copying frame when whole frame is included in one read
- Static textdecoder for faster string decoding in frames
- Error if a frame was split before the first 7 bytes between two reads
- tls connections require node 14 due to tls.connect({ onread })
- Typescript defintions through jsdoc comments