Azure SDK for C++: Service Bus Send/Receive Sample

This sample demonstrates how to send messages to and receive messages from an Azure Service Bus queue using the Azure SDK for C++.

Code Sample

Sender Sample

This code snippet illustrates sending a message to a Service Bus queue.

#include <azure/service-bus/administration_client.hpp> #include <azure/service-bus/service_bus_client.hpp> #include <azure/service-bus/message.hpp> #include <iostream> #include <string> #include <vector> int main() { // Replace with your Service Bus connection string and queue name std::string const connectionString = "YOUR_SERVICE_BUS_CONNECTION_STRING"; std::string const queueName = "YOUR_QUEUE_NAME"; try { // Create a Service Bus client Azure::ServiceBus::ServiceBusClient client(connectionString); // Create a sender for the queue auto sender = client.CreateSender(queueName); // Create messages to send std::vector<Azure::ServiceBus::Message> messages; messages.push_back(Azure::ServiceBus::Message("Hello, Service Bus!")); messages.push_back(Azure::ServiceBus::Message("Another message.")); // Send messages std::cout << "Sending messages..." << std::endl; auto sendResult = sender.SendMessages(messages); for (auto const& msgResult : sendResult.Value()) { std::cout << "Message sent with sequence number: " << msgResult.SequenceNumber << std::endl; } std::cout << "Messages sent successfully." << std::endl; } catch (std::exception const& ex) { std::cerr << "Error sending messages: " << ex.what() << std::endl; return 1; } return 0; }

Receiver Sample

This code snippet illustrates receiving messages from a Service Bus queue.

#include <azure/service-bus/service_bus_client.hpp> #include <azure/service-bus/message.hpp> #include <iostream> #include <string> #include <chrono> int main() { // Replace with your Service Bus connection string and queue name std::string const connectionString = "YOUR_SERVICE_BUS_CONNECTION_STRING"; std::string const queueName = "YOUR_QUEUE_NAME"; try { // Create a Service Bus client Azure::ServiceBus::ServiceBusClient client(connectionString); // Create a receiver for the queue // PeekLock mode is default, allowing messages to be locked and completed later. auto receiver = client.CreateReceiver(queueName); // Receive messages std::cout << "Waiting for messages..." << std::endl; auto receiveResult = receiver.ReceiveMessages(10, std::chrono::seconds(5)); // Receive up to 10 messages with a 5-second wait time if (receiveResult.Value().empty()) { std::cout << "No messages received within the timeout." << std::endl; } else { for (auto const& msg : receiveResult.Value()) { std::cout << "Received message: " << msg.Body() << std::endl; // Complete the message to remove it from the queue receiver.CompleteMessage(msg).Value(); std::cout << "Message completed." << std::endl; } } } catch (std::exception const& ex) { std::cerr << "Error receiving messages: " << ex.what() << std::endl; return 1; } return 0; }
Key Concepts
  • Service Bus Client: The entry point for interacting with Service Bus.
  • Sender: Used to send messages to queues or topics.
  • Receiver: Used to receive messages from queues or subscriptions.
  • Message: Represents the data being sent or received.
  • PeekLock: A receive mode where messages are locked for a specified duration, preventing other receivers from processing them until completed or abandoned.
  • Completion: Marks a message as successfully processed and removes it from the Service Bus.
Prerequisites
  • Azure Subscription.
  • Azure Service Bus Namespace created.
  • A Service Bus Queue configured within the namespace.
  • Azure SDK for C++ library installed and configured.
  • Connection string for your Service Bus namespace.
Next Steps