#azure-stream-analytics #azure-servicebus-topics #azure-servicebus-subscriptions
#azure-stream-analytics #azure-servicebus-темы #azure-служебная шина-подписки
Вопрос:
У меня есть следующая настройка:
- Концентратор событий
- Раздел Service bus с единой подпиской, которая принимает все сообщения из раздела (для моего POC)
- Вышеуказанная подписка на служебную шину настроена с включенными сеансами
- Задание Stream analytics (SA), которое перемещает события из концентратора событий (входные данные) в раздел служебной шины (выходные данные). Вот мой запрос SA:
SELECT *, LOWER(source) as Partner
INTO [sb-output]
FROM [test-input]
- Вышеуказанное задание также устанавливает ключ раздела для служебной шины. Используется следующий json в системных свойствах [sb-output] на основе документации на https://learn.microsoft.com/en-us/azure/stream-analytics/service-bus-topics-output#custom-metadata-properties-for-output :
{ "PartitionKey" : "Partner" }
Что я сделал:
- Отправлено событие в event hub без ключа раздела. Это было успешно.
{
"specversion": "1.0",
"id": "c8c4faad-9f53-4e43-95ca-c318d673660a",
"type": "CustomerChanged",
"time": "2020-09-09T22:25:40.0148301Z",
"source": "ABCD",
"subject": "system-1",
"datacontenttype": "application/json",
"dataschema": "1.0",
"data": {
"customerNumber": "7879875212123",
"firstName": "John",
"lastName" : "Kennedy"
}
}
- SA успешно переместил событие из концентратора событий в служебную шину.
- Подписка на служебную шину успешно получила сообщение, как показано ниже:
{
"specversion": "1.0",
"id": "c8c4faad-9f53-4e43-95ca-c318d673660a",
"type": "CustomerChanged",
"time": "2020-09-09T23:22:13.3647825Z",
"source": "ABCD",
"subject": "system-1",
"datacontenttype": "application/json",
"dataschema": "1.0",
"data": {
"customerNumber": "7879875212123",
"firstName": "John",
"lastName": "Kennedy"
},
"EventProcessedUtcTime": "2020-09-09T23:22:14.3776603Z",
"PartitionId": 0,
"EventEnqueuedUtcTime": "2020-09-09T23:22:14.3080000Z",
"Partner": "abcd"
}
- Как видно, партнер по свойствам находится в конце сообщения.
- Однако инструмент проводника служебной шины показывает мне, что для свойства PartitionKey установлено значение не «abcd», а какая-то другая случайная строка.
Устранение неполадок:
-
Чтобы убедиться, что я могу отправить сообщение в раздел служебной шины с определенным ключом PartitionKey, я написал пример кода, который отправляет сообщение в раздел служебной шины, явно установив свойство идентификатора сеанса в сообщении. Проводник служебной шины показал мне, что как для идентификатора сеанса, так и для свойств PartitionKey установлено правильное значение.
-
В выходной конфигурации ASA попытался установить следующие системные свойства json. Ни то, ни другое не сработало.
{ "SessionId" : "Partner" }
{ "PartitionKey" : "Partner", "SessionId" : "Partner" }
- В выходной конфигурации ASA попробовал установить оба столбца свойств (на
Partner
), а также столбцы системных свойств (на{ "PartitionKey" : "Partner" }
). Это не сработало.
Вопрос:
- Что я делаю не так с выходной конфигурацией ASA, которая обходит распространение значения PartitionKey из моего пользовательского поля в сообщение служебной шины?
- Также есть причина, по которой в столбцах системных свойств не отображается текст json, который я ввел после сохранения?
Комментарии:
1. MS работает над исправлением. До тех пор они предлагали следующую работу: { «PartitionKey»: «Partner», «SessionID»: «Partner», «Label»: «Partner» } в системных свойствах. Я протестировал это, и это работает.
2. Вы хотели бы опубликовать это в качестве ответа, чтобы вы могли пометить этот вопрос как ответ?
Ответ №1:
Предоставление ответа в соответствии с комментарием оригинального плаката:
В настоящее время Microsoft работает над исправлением.
До тех пор вы можете использовать предложенный обходной путь: { "PartitionKey" : "Partner", "SessionId" : "Partner", "Label": "Partner" }
в системных свойствах.