blogs/using-azure-service-bus-in-azure-us-government/ServiceBusQueueWriter.cs (44 lines of code) (raw):
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Azure.Messaging.ServiceBus;
using Azure.Identity;
using System.Configuration;
namespace ServiceBusQueueFunc
{
public class ServiceBusQueueWriter
{
private readonly ILogger<ServiceBusQueueWriter> _logger;
public ServiceBusQueueWriter(ILogger<ServiceBusQueueWriter> logger)
{
_logger = logger;
}
[Function("ServiceBusQueueWriter")]
public async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req)
{
string? fullyQualifiedNamespace = Environment.GetEnvironmentVariable("ServiceBusConnection__fullyQualifiedNamespace");
string? queueName = Environment.GetEnvironmentVariable("ServiceBusQueueName");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
if (fullyQualifiedNamespace == null || queueName == null || requestBody == null)
{
return new BadRequestObjectResult("There was an error reading the request body or the environment variables are not set.");
}
try
{
DefaultAzureCredentialOptions options = new DefaultAzureCredentialOptions();
options.AuthorityHost = AzureAuthorityHosts.AzureGovernment;
await using var client = new ServiceBusClient(fullyQualifiedNamespace, new DefaultAzureCredential(options));
var sender = client.CreateSender(queueName);
await sender.SendMessageAsync(new ServiceBusMessage(requestBody));
_logger.LogInformation("C# HTTP trigger function sent a message to Service Bus.");
return new OkObjectResult("Message sent to Service Bus.");
}
catch (Exception ex)
{
_logger.LogError(ex, "An error occurred in the function.");
return new StatusCodeResult(StatusCodes.Status500InternalServerError);
}
}
}
}