Сервисная шина Azure на сегодняшний день не поддерживает перекрестную пересылку пространства имен. Если это будет возможно, вы сможете настроить подписку с автоматической переадресацией в другое пространство имен. А до тех пор вам нужно будет настроить что-то особенное.
До сих пор было предложено следующее решение: добавить в код соединение со второй служебной шиной и добавить сообщения как к шине, так и к тестовой. Это требует изменения кода во многих областях приложения и неуклюже.
В дополнение к этому, оно вводит проблему тестирования в ваше производственное приложение, что кажется неправильным. Подход, который я бы попробовал (обратите внимание, что есть и другие варианты, которые также могут работать), заключался бы в том, чтобы иметь дополнительную подписку сущность и ввести функцию Azure , запускаемую ServiceBusTrigger
настроено для объекта подписки, который вы настроите. Функция сможет использовать привязку вывода ServiceBus
, настроенную для использования пространства имен тестирования. Преимущества этого подхода:
- Ваше производственное приложение не должно меняться.
- Вы полностью контролируете, какие сообщения отправляются в тестируемое пространство имен, фильтрующееся по подписке.
- Вы можете контролировать поток сообщений в функцию, отключив / включив подписку или удалив ее вместе с функцией.
Вы будете нести дополнительные расходы за выполнение функции.
Псевдокод:
[FunctionName("CloneForTesting")]
[return: ServiceBus(TopicName = "topic", SubscriptionName = "subscription", Connection = "ProductionServiceBusConnection")]
public static string ServiceBusOutput([ServiceBusTrigger(QueueName = "queue", Connection = "TestingServiceBusConnection")]
Message message, ILogger log)
{
log.LogInformation($"Cloning message with ID {message.MessageId}");
return message.Clone();
}