Revision history for Net-Async-AMQP
0.012 2014-12-11 11:04:10+00:00 Europe/London
No new features.
Bugs fixed:
* Heartbeat handling overhaul - the send/receive heartbeat timers are independent,
so we can now pick up heartbeat failure when we're not actively sending.
* Fixes for channel/connection close handling - all Futures representing channel activities
will now be marked as failed on channel closure
* Default values for user+password (guest/guest) are now applied - this avoids the following
RabbitMQ error:
"AMQPLAIN auth info [{<<76,79,71,73,78>>,void,undefined},{<<80,65,83,83,87,79,82,68>>,void,undefined}]
is missing LOGIN or PASSWORD field"
Internal changes:
* Timers and stream are now children of the top-level Net::Async::AMQP object
rather than attached directly to the loop
0.011 2014-12-03 13:20:39+00:00 Europe/London
New features:
* Pass Basic.CancelOk notifications through as a cancel event:
$ch->bus->subscribe_to_event(cancel => sub { my ($ev, $ctag) = @_; warn "cancel ctag $ctag" });
Needs the client property set for RabbitMQ to start sending these
messages - http://www.rabbitmq.com/consumer-cancel.html:
client_properties => {
capabilities => {
consumer_cancel_notify => Net::AMQP::Value->true,
}
}
in ->connect() or ConnectionManager->add()
Bugs fixed:
* Header and body frame type detection fixed
* Outgoing heartbeat timer reset on expiry
0.010 2014-12-02 10:14:25+00:00 Europe/London
New features:
* Support for passing heartbeat as a server parameter when calling
->add() on a Net::Async::AMQP::ConnectionManager.
0.009 2014-12-01 14:41:04+00:00 Europe/London
No new features.
Bugs fixed:
* No longer attempts to call ->frame_method on heartbeat frames
0.008 2014-08-30 00:33:42+01:00 Europe/London
New features:
* Debugging uses ->debug_printf() everywhere, and is controlled by the
standard IO_ASYNC_DEBUG env var
* Basic server implementation, still not usable but clients can at least
connect now
* All channel frames are now handled by the relevant ::Channel instance,
should provide slightly better performance and less chance for things
to go out of sync
Bugs fixed:
* Expect publish ACK even when we get a NO_ROUTE response
* Explicit string type enforced on all queue/exchange/routing key/ctag
fields, to allow numeric-looking values - a precaution against issues like
https://rt.cpan.org/Ticket/Display.html?id=81733
* Avoid excessive warnings in global destruction when the
Net::Async::AMQP::ConnectionManager objects go out of scope.
0.007 2014-08-27 03:27:09+01:00 Europe/London
No new features.
Bugs fixed:
* Channel traffic is independent. As such, the global pending frame handling
was broken: instead, we now track pending frames on a per-channel basis.
* Cancelling a ->listen request between the Consume.Start and Consume.Ok frames
meant that you'd end up with an active listener - we now explicitly cancel this
listener when the Consume.Ok frame turns up.
* Connection manager now applies the managed channel to queue objects
* Unnecessary extra connections were being opened, this has been fixed.
0.006 2014-08-25 18:01:14+01:00 Europe/London
No new features.
Bugs fixed:
* Handle channel close correctly
* Pass type information from messages - previously we were using the 'type' header
instead.
0.005 2014-08-18 05:11:08+01:00 Europe/London
No new featues.
Tests fixed:
* Don't try to connect to a 'default' AMQP server,
skip if env vars were not provided
0.004 2014-08-17 18:40:45+01:00 Europe/London
API CHANGES:
* The Net::Async::AMQP class is now an IO::Async::Notifier, to bring it in line with
other IO::Aync code. One side effect of this change is that events are now raised through
a message bus rather than directly on the Net::Async::AMQP instance itself.
Existing code will need to change this:
my $amqp = Net::Async::AMQP->new(loop => $loop);
to this:
$loop->add->(my $amqp = Net::Async::AMQP->new);
and this:
$amqp->subscribe_to_event(...);
to this:
$amqp->bus->subscribe_to_event(...);
New features:
* Connection manager for automatically connecting and assigning channels
* Some loadtesting scripts, for performance+stability testing on the server
implementation (not available yet, should be in the next release)
Bugs fixed:
* If we establish TCP connection but fail to negotiate auth with server,
previously this would leave the connection future unresolved. It will now
fail with a message indicating that the remote closed the connection.
* Net::AMQP was generating an invalid initial connection header
(AMQP\x01\x01$major$minor rather than AMQP\x00$major$minor$rev as the
AMQP 0.9.1 spec seems to require), we now generate our own header.
RabbitMQ seems happy with either.
0.003 2014-02-27 07:56:25+00:00 Europe/London
Bugs fixed:
* Connection close sends a real connection close, rather than a channel close request
0.002 2014-02-27 07:10:14+00:00 Europe/London
New features:
* Support parameters when declaring queues (passive, durable, exclusive)
0.001 2014-01-05 04:52:26 Europe/London
Initial CPAN release