apache/openwhisk-runtime-dotnet

Can't send messages to kafka

Sshnyari opened this issue · 7 comments

When trying to use Confluent.Kafka in order to produce messages to kafka/event streams, we get the error :

Failed to load the librdkafka native library.
    at Confluent.Kafka.Impl.LibRdKafka.Initialize(String userSpecifiedPath)
    ...

None of the librdkafka librairies packaged with Confluent.Kafka work with the current runtime
Is there a way to have one built-in the current runtime ?

How do you run openwhisk? If you're deploying your own, you can extend the dotnet runtime to include the packages you need. Alternatively, did you try using zip files to bundle the libraries?

We use it on IBM Cloud. We could include the libraries in the zip file, but how can we insure that it would be compatible with the runtime's OS and version ?

@Sshnyari The runtime itself is built on top of the microsoft/dotnet:2.2-runtime-alpine image. From what I could tell, the library you're using is compatible with .NETStandard 1.3, which means it should work with the .NET Core 2.2 runtime, you should just need to include all of the required libraries/references when building the zip file that is deployed. I believe running dotnet publish will do that for you.

This might shed some light on the issue ... confluentinc/confluent-kafka-dotnet#611

including the library compatible with the current alpine image (3.8) might work, but what if the runtime gets updated with a new alpine version ? we won't know of the change until there are errors on deployed dotnet functions
With a serverless mindset, we shouldn't have to worry about that

The runtimes are versioned to avoid this problem. A new runtime would appear as a new kind.

That solves it then if the runtime is always an alpine 3.8 with the kind dotnet:2.2