* Initial attempt at a Rust AMQP stack, merged against feature/rust_amqp for now. (#5942) * Enabled building AMQP *without* uAMQP * Start integrating Rust AMQP Value to C++ AMQP Value * AMQP Value tests now pass * Moved AmqpValueType ostream inserter to its original location * Added Rust AMQP Message implementation * Added start of message source tests * Enabled building AMQP *without* uAMQP * Start integrating Rust AMQP Value to C++ AMQP Value * Moved AmqpValueType ostream inserter to its original location * Message target support * Message source and target support * Add connection support; restructured tests to fail on RUST AMQP rather than attempting to run; removed some uAMQP-only features (#5986) * Checkpoint of connection logic * Started implementing Rust based Connection by pulling out uAMQP artifacts * Implemented AMQP Connection in Rust; started API surface refactoring for Rust APIs; Refactored tests to remove some uAMQP only elements. * Don't leak runtime context on calls * Refactor AMQP logic to better isolate rust AMQP code from uAMQP code. (#6008) * refactor uAMQP and Rust AMQP into separate implementations for ease of use * Add connection support; restructured tests to fail on RUST AMQP rather than attempting to run; removed some uAMQP-only features (#5986) * Checkpoint of connection logic * Started implementing Rust based Connection by pulling out uAMQP artifacts * Implemented AMQP Connection in Rust; started API surface refactoring for Rust APIs; Refactored tests to remove some uAMQP only elements. * Don't leak runtime context on calls * export UUID from AMQP * Cleaned up some more elements; reduced scope of doxygen significantly * runtime context needs to be process global not thread global; all tests pass or fail at this point * Merged main into branch * Implement AMQP Session APIs in Rust. (#6033) * Checkpoint of rust session support * Session begin/end now works * Session tests pass * Removed accidental regression * Added rust per-call context (#6043) * Reworked runtime context to be call context * Added context parameter to blocking AMQP calls * Added comments around the lifetime of the RustRuntimeContext captured in the CallContext object * uAMQP changes corresponding to Rust changes Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com> * sync rust SDK fixes to C++ --------- Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com> * Enable Rust ClaimsBasedSecurity interoperability; Converted EventHubs producer client to work with Rust AMQP changes. (#6059) * canonicalized return values; initial CBS support * Implementation of CBS for C++ * Amqp Authentication works; Integrate Rust AMQP into Eventhubs Producer client * Implemented Rust AMQP message sender. (#6083) * Initial sender implementation * PR feedback * Management APIs work (#6096) * Management APIs work --------- Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com> * Converted builders to be compliant with Rust guidelines. (#6102) * Converted builders to be compliant with Rust guidelines. * Bring rust changes back to C++ repo * Improved builder developer experience * Removed builders from AMQP layer to conform to Rust guidelines; Fixed AMQP bug in message sender tests (#6208) * Removed builders from AMQP layer to conform to Rust guidelines; Fixed AMQP related bug in message sender tests * Pr feedback * Implement receiving messages; Changes to eventhubs so that all eventhubs tests pass (#6254) * Eventhubs tests pass * Noise reduction; explain the task which spawns a task * Update sdk/eventhubs/azure-messaging-eventhubs/src/producer_client.cpp Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com> * PR feedback --------- Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com> * Integrate Rust 2 step message receive code to C++ (#6349) * Integrate Rust 2 step message receive code to C++ * If receiving a delivery failed, transmit the error to the message channel if at all possible * Enable Rust based AMQP by default (#6362) * AMQP tests now pass; Integrate TestAmqpBroker with CI pipeline * Updated changelogs to reflect API changes made during AMQP updates * Replace uAMQP with Rust AMQP as the default AMQP transport; Updated build configurationj to reflect that * Test fixes * PR feedback; test fixes * Fixed uninitialized variable tanking some tests (#6381) * Fixed uninitialized variable tanking some tests * Fixed Rust AMQP tests * Removed connection string support from Eventhubs and EH tests. (#6391) * Removed the ability to use connection strings from EventHubs * Enable Rust AMQP by default!!! * Update CMakePresets.json Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com> --------- Co-authored-by: Anton Kolesnyk <41349689+antkmsft@users.noreply.github.com>
5.5 KiB
5.5 KiB
Release History
1.0.0-beta.12 (Unreleased)
Features Added
Rust based AMQP library is now available for use in the Azure SDK for C++. This replaces the uAMQP library with a library based on the azure_core_amqp Rust crate.
Breaking Changes
Updated MessagePropertiesto remove Azure::Nullable from the types which are an AmqpValue because the AmqpValue already embeds the concept of nullability.
Bugs Fixed
Other Changes
1.0.0-beta.11 (2024-09-12)
Bugs Fixed
- Updated vendored copy of uAMQP to reflect upstream changes.
1.0.0-beta.10 (2024-06-06)
Bugs Fixed
- [#5536] Fixed use-after free in MessageSender and MessageReceiver when opening a connection.
1.0.0-beta.9 (2024-05-06)
Bugs Fixed
- Fixed a potential deadlock where a message receiver Open call could block indefinitely when adding the Link to the Pollables.
1.0.0-beta.8 (2024-04-09)
Breaking Changes
- Claims Based Security authentication now longer throws a
std::runtime_error, and instead follows the pattern of the rest of the AMQP library and returns an error. - Authentication now throws
Azure::Core::Credentials::AuthenticationExceptioninstead ofstd::runtime_error. - Added
Cancelledstatus toCbsOperationResultandManagementOperationStatus.
Bugs Fixed
- [#5284] [azure-identity][azure-messaging-eventhubs] Impossible to catch exception resulting in SIGABRT signal.
- [#5297]: Enabled multiple simultaneous
ExecuteOperationcalls. - Fixed crash when Link Detach message is received while link is being destroyed.
Other Changes
std::ostreaminserter for message body no longer prints the body of the message.- Tidied up the output of the
AmqpMessagestd::ostreaminserter. - Added several
std::ostreaminserters. - Pass numeric values to
std::ostreaminserters by value not by reference.
1.0.0-beta.7 (2024-02-02)
Features Added
- The
Closemethod on AMQP Message Sender and Message Receiver now blocks until the client receives aDETACHresponse from the remote node.
Breaking Changes
- The
Closemethod on AMQP Message Sender and Message Receiver now accepts anAzure::Core::Contextparameter. This parameter is defaulted so this change should not affect existing code.
Bugs Fixed
- Fixed uAMQP connection channel so that a channel is released when an END performative is received from the remote node instead of when the END performative is sent to the remote node.
- Enabled more than one uAMQP session to be created on a single connection.
1.0.0-beta.6 (2024-01-11)
Features Added
- AMQP Value reference counts are now atomic, this fixes several AMQP related crashes.
Breaking Changes
MessageReceiverreturns a pointer to the received message instead of a copy.
Bugs Fixed
- Fixed several memory leaks.
- AMQP Link Credits now work as expected.
- Integrated the fix for NVD - CVE-2024-21646.
1.0.0-beta.5 (2023-11-07)
Breaking Changes
- Refactored AMQP headers to isolate internal-only types to "internal" subdirectory in headers.
Other Changes
- Removed public dependency on azure-uamqp-c to enable local bug fixes.
1.0.0-beta.4 (2023-10-05)
Features Added
- AMQP moved from a polling model to an asynchronous model.
- Added a new
MessageReceiver::TryWaitForIncomingMessageAPI which allows callers to "peek" at the contents of the incoming message queue, returning an already received message or an empty message if none is available.
Breaking Changes
- Removed the
QueueSendAPI fromMessageSenderbecause it was not compatible with the new asynchronous model. - The new asynchronous model requires the user to call
Close()on theMessageSenderandMessageReceiverto ensure operations have stabilized before destroying the object. - For connection listeners (primarily test scenarios), if you call
Open()orListen()on a connection, you MUST callClose()before the connection is destroyed. - The
Connection::Close()method no longer requires that the caller provide connection disconnect information. - The
Session::End()method no longer requires that the caller provide session disconnect information. - Several asserts have been added which will force termination of the running application if invariants have not been met.
Bugs Fixed
- Several fixes related to the new asynchronous model. Ensures that message senders and receivers are always closed, and that resources are released.
1.0.0-beta.3 (2023-09-07)
Bugs Fixed
- When a message sender is destroyed, close the underlying AMQP link if it hasn't been closed already.
1.0.0-beta.2 (2023-08-04)
Features Added
- Added
Azure::Core::Amqp::Models::AmqpBinaryData::operator=(std::vector<std::uint8_t> const&). - Added
Azure::Core::Amqp::Models::AmqpMessage::MessageFormat. - Collection types (
AmqpArray,AmqpMap,AmqpList,AmqpBinaryData,AmqpSymbolandAmqpComposite):- Added explicit cast operator to underlying collection type.
- Added
find().
- Rationalized the return code for AMQP MessageSender and MessageReceiver and Management APIs to use AmqpError for error codes.
- Added additional AMQP Error values.
Breaking Changes
- Renamed
Azure::Core::Amqp::Models::AmqpMessageFormatValuetoAmqpDefaultMessageFormatValue. - Changed the return values for the MessageSender, MessageReceiver and Management APIs.
1.0.0-beta.1 (2023-07-06)
Features Added
- Initial release