Не удалось найти точку входа с именем 'rd_kafka_producev' в общей библиотеке 'librdkafka' - PullRequest
0 голосов
/ 19 февраля 2020

Я работаю над основным приложением. NET, которое использует пакет Nuget - Confluent.Kafka, версия 0.11.3

. Я использую его для создания экземпляра Producer, затем вызываю myProducer.ProduceAsync метод. Я получаю сообщение об ошибке в журналах приложений, в котором говорится: Unable to find an entry point named 'rd_kafka_producev' in shared library 'librdkafka'.

Я запускаю Kafka в контейнере, работающем на Debian v9. Контейнер docker, на котором выполняется приложение. NET Core, использующее Kafka, установил librdkafka1 - v0.9.3-1. Мне нужно было вручную установить его в контейнер как часть Docker образа, используя:

RUN apt-get update -y RUN apt-get install -y librdkafka-dev

Я не понимаю, почему мне нужно было установить его вручную в любом случае - это должно было исправить ошибку, когда библиотека вообще не была найдена. Разве это не должно уже существовать на изображении? Я использую стандартный wurstmeister/kafka Docker образ.

Все работает на другом сервере, где используется точно такая же версия пакета Confluent.Kafka, и установлена ​​точно такая же librdkafka1 , Есть идеи как это исправить?

1 Ответ

0 голосов
/ 19 февраля 2020

Я удалил это из файла Docker:

RUN apt-get update -y RUN apt-get install -y librdkafka-dev

Затем удалил librdkafka1 из контейнера Debian, на котором запущено мое приложение. Повторно развернуло мое приложение в контейнере, и теперь оно работает. Странно то, что librdkafka1 теперь не существует как пакет для контейнера.

Я обнаружил, что librdkafka1 - это библиотека C ++, необходимая для зависимости. NET Confluent.Kafka в пределах my. NET Основной проект. Я также поднял эту проблему Github , и Магнус Эденхилл, создатель librdkafka, любезно предоставил эту информацию:

confluent-kafka-do tnet зависит от nuget librdkafka.redist пакет, который содержит librdkafka, поэтому вам обычно не нужно вручную устанавливать librdkafka в системе (в некоторых случаях вы можете, например, при использовании GSSAPI).

Так что в большинстве случаев, как Если в вашем решении в качестве зависимости в вашем решении есть пакет nuget Confluent.Kafka, librdkafka должен быть каким-либо образом установлен. Поэтому, если у вас возникают проблемы, аналогичные моим, возможно, стоит очистить ваше развертывание / контейнер и все явно установленные экземпляры librdkafka1 и повторно развернуть их для установки зависимостей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...