Channel::exchange_declare
now takes anExchangeKind
parameter instead of an&str
- Warn on unused
Confirmation
- Avoid Mutex around consumer delegate to enable proper multithreading
- Updated amq-protocol to 3.0.0
Channel::connection_[,un}blocked
is nowConnection::{,un}block
failure
as been replaced withstd::error::Error
usageConfirmation::as_error
has been removed- Consumers API has been cleaned up, everything is now a
DeliveryResult
IoLoop::run
is nowIoLoop::start
- Add support for
update_secret
for oauth2 authentication module - Add support for TLS "identity" (client certificate)
- Consumer can now be used as an
Iterator<Item = Delivery>
Consumer::set_delegate
now accepts a closure parameter- Add
lapin::Result
- Update amq-protocol to fix amqps handling
- Fix error handling during early connection stage
- Properly forward errors to consumer delegates
IoLoop
fixes under heavy loads
IoLoop
fixes under heavy loads
- Make
Connection::connector
andIoLoop:run
public
- Better handle multiple channel publishing under heavy load
- Fix retrying of
basic_publish
frames
- Rework how
basic_publish
is handled internally to ensure concurrent usages work as expected
- Do not hang on tasks that require an answer in case of channel error
- Fixes some frames ordering when using concurrent
basic_publish
under heavy load
- Properly broadcast channel error to all pending tasks/futures
- Fix unblocking connection
- Properly broadcast connection error to all pending tasks/futures
- Unused IoLoopError has been dropped
- Consumer streams now properly forward connection errors
- lapin's consumer stream now returns a Result
ConsumerDelegate
now has aon_error
hook
- Properly handle network disconnections on OSX
Connection::close
no longer hangsConsumerDelegate
no longer requiresfmt::Debug
ConsumerDelegate
methods have been renamed for clarity and onlyon_new_delivery
is now mandatory
lapin-async
as been renamed tolapin
- lapin: Instead of passing a
Box<dyn ConsumerSubscriber>
as a parameter tobasic_consume
, you must now callset_delegate(Box<dyn ConsumerDelegate>)
on the returnedConsumer
lapin
has experimental support forfutures-0.3
+std::future::Future
through itsfutures
feature
- you can now select the TLS implementation used for amqps or disable amqps support
- vhosts are properly handled again
- we now properly wait for the return message when last ack is a nack for publishers confirm
wait_for_confirms()
is now async (needs to be awaited)
- More work around connection failures, properly report those as errors
- Add a way to register a connection error handler
- Properly handle connection failures
- async
Connection::run
to keep the program running when there is nothing left to downgraded but consume new messages
io_loop
correctly exists once connection is no longer connected
- Some internal methods are no longer public (channel and connection handling)
- Rework how we close channels and connection
- Drop duplicate Credentials param from connect, use the credentials from the AMQPUri.
- All of AMQP methods and auth mechanisms are now supported
- Better consumers handling
- Misc code cleanup and modernization
- AMQP is now fully supported, no more crahs on unexpected frames
- Method options are now generated. Hardcoded fields from AMQP omitted. Options are shared between async and futures
- The way we handle
publisher_confirm
has changed. You now need to callconfirm_select
explicitely, and thenwait_for_confirms
to wait for all pending confirmations - async
- Methods are now on the
Channel
object which is now returned instead ofchannel_id
bycreate_channel
- Methods are now generated from protocol specifications
- Methods return a Confirmation that can be awaited
- ShortString and LongString are now concrete types (!= String), which can be created from &str or String using
into()
- Connection::connect has been rewritten
- Methods are now on the
- futures
- Port to the new lapin-async
- Client::connect has been rewritten
- Better
delivery_tag
handling - Adapt our behaviour wrt ack/nack to be specifications-compliant
- We now pass several additional information to the server when connecting, such as capabilities
- Connect now takes an additional
ConnectionProperties
for better configuration
- Better logging when channel gets closed by server
- Support receiving BasicCancel from the server
- Drop prefetched messages when speicific arguments are passed to
basic_{,n}ack
orbasic_cancel
- Drop sasl dependency, avoiding likage to LGPL-3 licensed code
- Switch to edition 2018
- Switch to
parking_lot
Mutex
- futures
- Drop now unused mutex poisoning error
- Update
amq-protocol
- async:
- Introduce a new
Error
type, replacing occurences ofio::Error
in public APIs (#145)
- Introduce a new
- futures:
- Introduce a new
Error
type, replacing occurences ofio::Error
in public APIs (#145)
- Introduce a new
- Update
env_logger
- Drop unused
build.rs
from async
- Fix heartbeat interval
- Update amq-protocol dependency
- Reexport
amq_protocol::uri
- futures:
basic_ack
andbasic_nack
API now support passing themultiple
flag- Port to the new
tokio-codec
crate - The object returned by
queue_declare
now holds the messages count and the consumers count too
- Fully rework how consumers are handled internally, should be way more robust now
- Heartbeats are now preemptive and are sucessfully sent even under heavy load
- Port to
nom
4 - async: some fields got their visibility downgraded to private as part of the consumers rework
- futures:
- We now use
impl trait
and thus require rust 1.26.0 or greater basic_publish
payload is now aVec<u8>
- We now use
- Implement
channel_close_ok
- Slightly rework consumers internal handling
- futures:
- Allow cancelling the Heartbeat future
- Implement flow methods
- Fix bad expectation for empty payloads
- Fix heartbeat when configured value is 0
- Fix channel overflow when
channel_max
is low - futures:
- Ensure tasks aren't dropped when we hit
Async::NotReady
but queued for re-poll instead - Correctly handle mutex poisoning
- Use generated consumer tag and queue name when an empty one is provided
- Fix
Sink
implementation onAMQPTransport
- Ensure tasks aren't dropped when we hit
- futures:
- Port to
tokio
- Update to
tokio-timer
0.2 queue_declare
now return aQueue
objectbasic_consume
now expects aQueue
object to ensure you've calledqueue_declare first
- Port to
- futures: Get back to
tokio-timer
0.1
- implement
basic_qos
- futures:
- Implement
basic_nack
- Implement
queue_unbind
- Mark all futures as
Send
to easetokio
integration
- Implement
- futures: Get back to
tokio-timer
0.1
Message
is nowDelivery
, differentiate fromBasicGetMessage
- futures:
- Port to
tokio-timer
0.2 - Prefer
handle.spawn
tothread::new
for the heartbeat
- Port to
- Rework how the futures API is handled internally
- Rework client-server parameters negociation at connection
- futures:
create_confirm_channel
now take aConfirmSelectOptions
- Run heartbeat in a separated thread (delegate thread creation to user)
- Return a heartbeat creation closure alongside the client
- Implement
access
methods - async:
- Make errors more specific
- Do the
frame_max
negociation with the server
- futures:
- Implement missing exchange methods
- futures: Rework the
basic_publish
API
- Update
amq-protocol
- Better error handling
- futures: Implement
Channel::close
- Polling improvements
- Better error handling
- Implement
exchange_declare
- futures:
- Implement
queue_bind
- Implement
queue_delete
- Implement
- Allow chosing the vhost
- Update
sasl
to 0.4 (removes theopenssl
dependency)
- Implement
confirm_select
- async:
- Add support for BasicProperties
- Implement
receive_basic_ack
- Implement
receive_basic_nack
- futures:
- Implement confirm channel
- Implement heartbeat
- Chunking of message bodies
- futures: Add options for API methods missing them
- Initial release