This sample demonstrates how to send messages to and receive messages from an Azure Service Bus queue using the Azure SDK for C++.
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;
}
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;
}
Explore more advanced scenarios:
Refer to the official Azure SDK for C++ documentation for comprehensive details.