- new: decode compressed message bodies in
tap
andsub
command, when the messages are printed to the console. The encoding is taken from theContentEncoding
message property.gzip
,deflate
,zstd
andbzip2
are supported.
- new:
--property KEY=VALUE
option to specify message properties like e.g.Expiration
,ContentType
etc. in thepub
command. Runrabtap help properties
to list the available message properties.
- new:
--filter=FILTER
option fortap
andsub
commands to filter output of received messages, e.g.rabtap sub JDQ --filter="r.msg.RoutingKey == 'test'"
- breaking change: the
binding
,queue
,exchange
,connection
andchannel
variables available in expressions ofrabtap info --filter=FILTER
are now all prefixed withr.
and are thus now to be referenced asr.binding
,r.queue
etc.
- govaluate not being maintained since 2017, we switch to
Expr for use as the expression-evaluator of the
--filter <expr>
option. The syntax ofExpr
is similar, but not the same, so this can be considered a breaking change - dependency updates
- simplify code (fanin) and reduce dependencies
- fix consumer incorrectly displayed in info command
- update dependencies & go
- experimental WASM support, use go 1.21, simplify code
- update dependencies, use go 1.20
- new: create exchange-to-exchange bindings with
rabtap exchange bind ...
- new: show exchange-to-exchange bindings in
info
command - fix: drastically improve performance of
info
command for large topologies with 1000's of queues/connections/channels - chg: show channel information in
info
command with--consumers
option - chg: improve output of
info
command (attributes) - chg:
dot
output ofinfo
command now shows separate vhosts
- new: detect and replay messages subscribed from the RabbitMQ FireHose exchange (#74)
- chg: use PLAIN auth when both a client certificate and username and password is provided (#73)
- switch to github.com/rabbitmq/amqp091-go amqp lib (#72)
- new: new option
--idle-timeout=DURATION
added tosub
andtap
commands - chg: always wait for server notifications after pubishing, to be informed on potential problems like publishing to a non existing exchange
- new: specify multiple
--args=KEY=VALUE
options to pass additional arguments to thesub
command. - new: create lazy queue with
queue create ... --lazy
- new: specify queue type to create with
queue create ... --queue-type=TYPE
- new: specify offset with
--offset=OFFSET
when reading from streams
- new: specify multiple
--args=KEY=VALUE
options to pass additional arguments to thequeue
andexchange
commands.
- new:
--limit=NUM
option in sub and tap command to limit the number of messages to receive. - change:
--no-auto-ack
option insub
command was replaced by options--reject
and--requeue
. Prefetch count is now 1 and by default every message will be acknowledged by rabtap.
- new: show queue utilisation and type (e.g. classic, quorum, stream) to info command
- new: build rabtap for more targets using goreleaser
- new: support header based routing (pub, queue bind, queue unbind)
- new: add a docker image (ghcr.io/jandelgado/rabtap)
- fix: do not print messages to stdout in parallel, which can result in garbled output when the queue is filled up and messages are read at high frequency.
- new: listen for channel errors and print an error when a message is e.g. published to a non-existing exchange.
- new:
--confirms
option forpub
command: wait for publisher confirmations from the server and log an error if a confirmation is negative or not received. - new:
--mandatory
option forpub
command: publish message with mandatory flag set. If set and a message can not be delivered to a queue, the server returns the message and rabtap will log error when the returned message is received (e.g. unroutable messages) - new: listen for channel close events messages by the broker (e.g. when publishing to an non-existant exchange)
- improved logging capabilities while reducing dependencies
- new:
info
andclose
commands can now be cancelled by SIGTERM
- fix: make client certificate auth work. This implements a workaround until streadway/amqp#121 gets merged (#51)
- drop travis-ci, using github-actions now (#49)
- fix: rabtap info: workaround for RabbitMQ API returning an
"undefined"
string where an integer was expected (#47)
- new: support TLS client certificates (contributed by Francois Gouteroux)
- fix: make sure that headers in amqp.Publishing are always using amqp.Table structures, which could caused problems before.
- fix: avoid endless recursion in info command (#42)
- The
pub
command now allows ialso to replay messages from a direcory previously recorded. The pub command also honors the recorded timestamps and delays the messages during replay. The signature of of thepub
command was changed (see README.md). Note that the exchange is now optional and will be taken from the message metadata that is published.
- new option:
--format FORMAT
which controls output format intap
,subscribe
commands.--format json
is equivalent to--json
, which is now deprecated - new output format:
--format json-nopp
which is not-pretty-printed JSON intap
andsubscribe
commands - new option
--silent
for commandstap
andsubscribe
which suppresses message output to stdout - short
-o
option for the info command--omit-empty
is no longer supported - uniformly name test files
*_test.go
to improve external tool discoverbility
- fix: avoid blocking write during tap, subscribe which can lead to ctrl+c to not work when e.g. ctrl+s is pressed during tap or subscribe.
- refactorings
- new option
--no-auto-ack
forsub
command disables auto acknowledge when messages are received by rabtap (#15) - new: output of
info
command can now also be rendered to dot format, to create a visualization using graphviz. Set format with--format=dot
, e.g.rabtap info --format=dot
. - fix: termination with ctrl+c in
tap
,pub
,sub
commands now works reliably - change: option
--by-connection
ofinfo
command changed to--mode=byConnection
- heaviliy simplified code
- fix: tap: allow colons in exchange names by escaping them (
exchange\\:with\\:colon
). Fixes #13.
- Timestamp when message was received by rabtap now stored in JSON format
in
XRabtapReceivedTimestamp
field. - Simplified code
- new option
--by-connection
for info command added, makinginfo
show connection > - new: prefetch count added to output of
info
command (on consumer level)
- new command
queue purge QUEUE
added
- change: in subscribe mode, the consumer will use non-exclusive mode, allowing multiple consumers on the same queue.
- updated go version to 1.12, dropping
dep
module manager - fixed documentation
- new command
queue unbind QUEUE from EXCHANGE
to unbind a queue from an exchange
- fix: when publishing (
rabtap pub
messages from stdin, a single EOF (ctrl+d) ends now the publishing process - fix:
rabtap pub
fails with error message when publishing to unknown exchange - fix: pub, sub, and tap now fail early when there is a connection problem on the initial connection to the broker
- fix:
--saveto=DIR
option had no effect insub
command
- new options
--filter FILTER
to filter output ofinfo
command.
- fix: bug in REST-client panicking when endpoint not available
- info command accelerated by doing parallel REST requests to the RabbitMQ API endpoint
- rabtap now terminates if the first connection attempt fails, instead of retrying to connect
- termination behaviour improved
- testgen tool adds a message count to generated messages
- a changelog ;)
- new
--consumers
option of theinfo
command prints also information on the connection. - new command
conn
for connection related operations. Currently allows to close a connection withrabtap conn close <connection-name>
.
- minor changes to output of
info
command (i.e. some values are now quoted)