Channel::exchange_declarenow takes anExchangeKindparameter 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}blockedis nowConnection::{,un}blockfailureas been replaced withstd::error::ErrorusageConfirmation::as_errorhas been removed- Consumers API has been cleaned up, everything is now a
DeliveryResult IoLoop::runis nowIoLoop::start
- Add support for
update_secretfor oauth2 authentication module - Add support for TLS "identity" (client certificate)
- Consumer can now be used as an
Iterator<Item = Delivery> Consumer::set_delegatenow 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
IoLoopfixes under heavy loads
IoLoopfixes under heavy loads
- Make
Connection::connectorandIoLoop:runpublic
- Better handle multiple channel publishing under heavy load
- Fix retrying of
basic_publishframes
- Rework how
basic_publishis 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_publishunder 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
ConsumerDelegatenow has aon_errorhook
- Properly handle network disconnections on OSX
Connection::closeno longer hangsConsumerDelegateno longer requiresfmt::Debug
ConsumerDelegatemethods have been renamed for clarity and onlyon_new_deliveryis now mandatory
lapin-asyncas 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
lapinhas experimental support forfutures-0.3+std::future::Futurethrough itsfuturesfeature
- 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::runto keep the program running when there is nothing left to downgraded but consume new messages
io_loopcorrectly 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_confirmhas changed. You now need to callconfirm_selectexplicitely, and thenwait_for_confirmsto wait for all pending confirmations - async
- Methods are now on the
Channelobject which is now returned instead ofchannel_idbycreate_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_taghandling - 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
ConnectionPropertiesfor 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}ackorbasic_cancel
- Drop sasl dependency, avoiding likage to LGPL-3 licensed code
- Switch to edition 2018
- Switch to
parking_lotMutex
- futures
- Drop now unused mutex poisoning error
- Update
amq-protocol
- async:
- Introduce a new
Errortype, replacing occurences ofio::Errorin public APIs (#145)
- Introduce a new
- futures:
- Introduce a new
Errortype, replacing occurences ofio::Errorin public APIs (#145)
- Introduce a new
- Update
env_logger - Drop unused
build.rsfrom async
- Fix heartbeat interval
- Update amq-protocol dependency
- Reexport
amq_protocol::uri
- futures:
basic_ackandbasic_nackAPI now support passing themultipleflag- Port to the new
tokio-codeccrate - The object returned by
queue_declarenow 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
nom4 - async: some fields got their visibility downgraded to private as part of the consumers rework
- futures:
- We now use
impl traitand thus require rust 1.26.0 or greater basic_publishpayload 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_maxis low - futures:
- Ensure tasks aren't dropped when we hit
Async::NotReadybut queued for re-poll instead - Correctly handle mutex poisoning
- Use generated consumer tag and queue name when an empty one is provided
- Fix
Sinkimplementation onAMQPTransport
- Ensure tasks aren't dropped when we hit
- futures:
- Port to
tokio - Update to
tokio-timer0.2 queue_declarenow return aQueueobjectbasic_consumenow expects aQueueobject to ensure you've calledqueue_declare first
- Port to
- futures: Get back to
tokio-timer0.1
- implement
basic_qos - futures:
- Implement
basic_nack - Implement
queue_unbind - Mark all futures as
Sendto easetokiointegration
- Implement
- futures: Get back to
tokio-timer0.1
Messageis nowDelivery, differentiate fromBasicGetMessage- futures:
- Port to
tokio-timer0.2 - Prefer
handle.spawntothread::newfor the heartbeat
- Port to
- Rework how the futures API is handled internally
- Rework client-server parameters negociation at connection
- futures:
create_confirm_channelnow take aConfirmSelectOptions- Run heartbeat in a separated thread (delegate thread creation to user)
- Return a heartbeat creation closure alongside the client
- Implement
accessmethods - async:
- Make errors more specific
- Do the
frame_maxnegociation with the server
- futures:
- Implement missing exchange methods
- futures: Rework the
basic_publishAPI
- 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
saslto 0.4 (removes theopenssldependency)
- 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