Я пишу код, который будет публиковать сообщения из нескольких потоков в Azure Концентратор событий на C # с использованием EventHubClient. Документация для EventHubClient содержит довольно стандартный шаблонный лист.
«Любые общедоступные статические (общие в Visual Basic) члены этого типа являются потокобезопасными. Не гарантируется, что любые члены экземпляра будут потокобезопасными».
Дополнительная документация по безопасности потоков ни в одном из четыре отправить методы Я больше всего ожидал бы быть потокобезопасным. Если бы я считал, что методы отправки не являются потокобезопасными, я бы создавал новый экземпляр EventHubClient каждый раз, когда хотел отправить сообщение. Поскольку базовое tcp-соединение очевидно используется повторно, если не будут предприняты шаги это может не иметь слишком больших накладных расходов. Подобные проблемы возникают с разделенными отправителями. хотя, учитывая, что для его создания существует асинхронный метод, они вполне могут иметь собственное соединение AMQP.
Являются ли некоторые, если не все, методы экземпляра EventHubClient потокобезопасными, несмотря на документацию?
И для кого-нибудь из Azure можно было бы уточнить это в документации? Подобная проблема с документацией (при условии, что это неверно, что кажется вероятным), похоже, влияет на таблицу Azure и обычно встречается в документы MSDN. Что касается EventHub, это контрастирует с четким заявлением о безопасности потоков в Kafka и AWS Kinesis по крайней мере явно не помечает все как небезопасное. Я не нашел EventHubs в части SDK с открытым исходным кодом, поэтому не мог проверить себя.