Подключиться к теме с помощью MSI приложения-функции
Можно ли подключиться к теме служебной шины с помощью MSI приложения-функции службы приложений? Любая документация или примеры для выполнения этого с помощью шаблона ARM или.NET SDK (C#) были бы полезны.
1 ответ
Решение
См. Пример ниже:
пространства имен:
using Microsoft.Azure.ServiceBus;
using Microsoft.Azure.ServiceBus.Primitives;
Добавление сервисов в контейнер:
services.Configure<ServiceBusConfiguration>(Configuration.GetSection("ServiceBus"));
Основная реализация:
public class ServiceBusConfiguration
{
public string Namespace { get; set; }
public string Topic { get; set; }
}
public class HomeController : Controller
{
public ServiceBusConfiguration Config { get; }
public HomeController(IOptions<ServiceBusConfiguration> serviceBusConfig)
{
Config = serviceBusConfig.Value;
}
[HttpPost]
public async Task<ActionResult> Send(ServiceBusMessageData messageInfo)
{
if (string.IsNullOrEmpty(messageInfo.MessageToSend))
{
return RedirectToAction("Index");
}
var tokenProvider = TokenProvider.CreateManagedServiceIdentityTokenProvider();
var sendClient = new TopicClient($"sb://{Config.Namespace}.servicebus.windows.net/", Config.Topic, tokenProvider);
await sendClient.SendAsync(new Message(Encoding.UTF8.GetBytes(messageInfo.MessageToSend)));
await sendClient.CloseAsync();
return RedirectToAction("Index");
}
}
Дополнительные сведения см. В разделе Использование служебной шины из службы приложений с управляемым удостоверением службы.