azure-core-amqp
Loading...
Searching...
No Matches
Azure SDK AMQP Library for C++

Azure::Core::Amqp (azure-core-amqp) provides an implementation to enable developers to create Azure SDKs which consume the AMQP protocol. Note that this is NOT a general purpose AMQP library, it is intended solely for the purposes of building Azure C++ SDK clients which communicate with Azure services over AMQP.

Getting started

Include the package

The easiest way to acquire the AMQP library is leveraging vcpkg package manager. See the corresponding Azure SDK for C++ readme section.

To install Azure Core AMQP package via vcpkg:

> vcpkg install azure-core-amqp-cpp

Then, use in your CMake file:

find_package(azure-core-amqp-cpp CONFIG REQUIRED)
target_link_libraries(<your project name> PRIVATE Azure::azure-core-amqp)

Key concepts

The AMQP Protocol is a relatively complicated protocol which is used by Azure services to communicate with clients. This library provides a set of classes which can be used to build Azure SDK clients which communicate with Azure services over AMQP.

The AMQP library provides the following classes:

  • AmqpClient - The basic client used to communicate with the AMQP server.
  • MessageSender - A class which is used to send messages to an AMQP server.
  • MessageReceiver - A class which is used to receive messages from an AMQP server.

Examples

Create an AMQP Message Sender

An AMQP Message Sender is responsible for sending messages to an AMQP server over an AMQP Session.

Azure::Core::Amqp::_internal::MessageSenderOptions senderOptions;
senderOptions.Name = "sender-link";
senderOptions.MessageSource = "source";
senderOptions.SettleMode = Azure::Core::Amqp::_internal::SenderSettleMode::Unsettled;
senderOptions.MaxMessageSize = std::numeric_limits<uint16_t>::max();
Azure::Core::Amqp::_internal::MessageSender sender(
session, credentials->GetEntityPath(), senderOptions, nullptr);

Once the message sender has been created, it can be used to send messages to the remote server.

message.SetBody(Azure::Core::Amqp::Models::AmqpBinaryData{'H', 'e', 'l', 'l', 'o'});
constexpr int maxMessageSendCount = 5;
int messageSendCount = 0;
while (messageSendCount < maxMessageSendCount)
{
auto result = sender.Send(message);
messageSendCount += 1;
}
An AMQP binary value, a sequence of octets.
Definition amqp_value.hpp:774
An AmqpMessage object represents a received AMQP message.
Definition amqp_message.hpp:47
void SetBody(std::vector< AmqpList > const &bodySequence)
Sets the body of the message to a list of sequence sections.
Definition amqp_message.cpp:385

Next steps

You can build and run the tests locally by executing azure-core-amqp-test. Explore the test folder to see advanced usage and behavior of the public classes.

Troubleshooting

If you run into issues while using this library, please feel free to file an issue.

Reporting security issues and security bugs

Security issues and bugs should be reported privately, via email, to the Microsoft Security Response Center (MSRC) secur.nosp@m.e@mi.nosp@m.croso.nosp@m.ft.c.nosp@m.om. You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Further information, including the MSRC PGP key, can be found in the Security TechCenter.

License

Azure SDK for C++ is licensed under the MIT license.

Impressions