Bunny is updated to 1.1.3+ which should offer much better latency for workloads with lots of small messages published frequently.
Uncaught exceptions in consumers now result in Hutch rejecting
messages (deliveries) using basic.nack
. This way they are dead lettered.
Contributed by Garrett Johnson.
hutch/consumer.rb
no longer fails to load with the
apps that do not require "set"
.
Contributed by Garrett Johnson.
Namespaces now can include any characters that are valid in RabbitMQ queue names.
Contributed by Garrett Johnson.
It is now possible to configure basic.qos
(aka channel prefetch) setting
used by Hutch using the :channel_prefetch
config key.
Hutch now elides passwords from logs.
It is now possible to make Hutch not use RabbitMQ HTTP API (e.g. when the RabbitMQ management plugin that provides it is not available).
Extra options passed to Hutch::Broker#publish
will now be propagated.
Messages published with Hutch now have content type set
to application/json
.
Hutch now uses heartbeat interval of 30, so heartbeats won't interfere with transfers of large messages over high latency networks (e.g. between AWS availability regions).
It is now possible to specify an optional queue name:
class FailedPaymentConsumer
include Hutch::Consumer
consume 'gc.ps.payment.failed'
queue_name 'failed_payments'
def process(message)
mark_payment_as_failed(message[:id])
end
end
Global properties can now be specified for publishing:
Hutch.global_properties = proc {
{ app_id: 'api', headers: { request_id: RequestId.request_id } }
}
- Metadata can now be passed in to
#publish
- Raise an exception when publishing fails
- Support for the
--mq-tls-key
and--mq-tls-cert
configuration options.
- No exception raised when hutch is run with no consumers. Instead, a warning is logged.
- Internal refactoring: use Bunny's shiny
ConsumerWorkPool#threads
attr_reader.
- Friendlier Message#inspect, doesn't spew out detailed bunny info.
- More autoloading tweaks, all internal modules are now autoloaded.
- Autoload the Broker module, which was missed in the previous release.
- Autoload internal modules. Fixes regression where the
Config
module was not available by simplyrequire
inghutch
.
- Support for loading configuration from a file, specified with the
--config
command line option.
- Add
--[no-]autoload-rails
flag to optionally disable the autoloading of Rails apps in the current directory
- Fix inconsistency with
mq-tls
option
- Support for connecting to RabbitMQ with TLS/SSL. There are two new
configuration options :
mq-tls
andmq-api-ssl
. - JSON message parsing errors are now handled properly.
- Relax Bunny dependency specification
- Initial release