confluentinc / confluent-kafka-dotnet

Confluent's Apache Kafka .NET client
https://github.com/confluentinc/confluent-kafka-dotnet/wiki
Apache License 2.0
80 stars 866 forks source link

DllNotFoundException on rhel.6-x64 #635

Closed los93sol closed 6 years ago

los93sol commented 6 years ago

Description

I have an application that I build for the rhel.6-x64 runtime identifier and upon running I get the following...

Unhandled Exception: System.DllNotFoundException: Failed to load the librdkafka native library.

How to reproduce

Build a project with -r rhel.6-x64 specified and try to run it on a rh6 machine.

Checklist

Please provide the following information:

los93sol commented 6 years ago

Anyone have any idea how I can work around this issue or a proper fix for it?

mhowlett commented 6 years ago

have you tried using the generic linux-x64 RID instead of rhel.6-x64? I don't think this will work however, as i'm quite sure we don't include a build compatible with rhel.6 in librdkafka.redist (we plan to however along with alpine linux). To work around this, you could build a custom version of librdkafka (it's not hard), or use the confluent platform RHEL package for librdkafka and use Confluent.Kafka.Library.Load to load librdkafka. You could also possibly create a custom librdkafka.redist nuget package to make distribution of your app easier. Not quite sure how hard that would be, might be really easy or there might be something I'm not thinking of.

los93sol commented 6 years ago

@mhowlett Thanks for the response on this. Unfortunately, I can't build with the generic rid since I'm using self contained deployments and rhel.6 has some special framework dependencies to make it work properly. I was guessing that it probably wasn't packaged for rh6, but good to have the clarification. I'll take a look at the options you suggested and see if I can go one of those routes.

los93sol commented 6 years ago

@mhowlett Looks like simply building librdkafka for RH6 was enough to get it going for me. Quick question though, what version is being distributed with beta-1.0? I just want to be sure I'm using the same version

mhowlett commented 6 years ago

i'd recommend 0.11.6-RC3. if you want idempotent producer or have a large cluster, you could also try the idempotence branch (which additionally has functionality to minimize broker connections).

los93sol commented 6 years ago

Awesome, this worked perfectly for me, would be better if it was packaged out of the box, but it works for me now and that's what I needed. Thank you for your help!

mhowlett commented 6 years ago

on the todo list...