You can manually download and install the Apache® Kafka® C/C++ library or automate the process. Instructions are provided for both.
Important: Progress® recommends you install a recent release version of the Apache Kafka C/C++ library. The minimum version required is 1.7.

Manual install

To manually install on Windows:
  1. Open a browser and visit https://www.nuget.org/packages/librdkafka.redist/.
  2. Click the Download package link.
  3. Rename the file extension of the downloaded file from nupkg to zip.
  4. Open the zip file.
  5. Extract the files from the runtimes\win-x64\native\ folder to your application working directory.

Automated install

Alternatively, you can run a script to download and install the Apache Kafka C/C++ library. This example PowerShell script downloads the librdkafka 1.8 package from NuGet and extracts the required files to the current folder. To get started, copy the script to the application working directory and run it there.

# This PowerShell script downloads the 1.8 version of librdkafka from NuGet
# and extracts the relevant libraries needed by OpenEdge ABL for the
# Windows 64 bit distribution.

$Url = 'https://www.nuget.org/api/v2/package/librdkafka.redist/1.8.2'

$DownloadFolder = 'librdkafka\archive\'

# Location where the .nupkg file is to be stored once downloaded
$DownloadZipFile = $DownloadFolder + 'librdkafka.redist.1.8.2.nupkg'

# Location where the .dll is to be extracted
$ExtractPath = 'librdkafka\libs\'

# Filter to only extract win-x64 version of the libraries from the nupkg
$Nt64Filter = '*win-x64*'
$DllFilter = '*.dll'

# ensure the download folder exists
$exists = Test-Path -Path $DownloadFolder
if ($exists -eq $false)
{
  $null = New-Item -Path $DownloadFolder -ItemType Directory -Force
}

# ensure the output folder exists
$exists = Test-Path -Path $ExtractPath
if ($exists -eq $false)
{
  $null = New-Item -Path $ExtractPath -ItemType Directory -Force
}

# Only download the librdkafka nupkg if it does not already exist
$exists = Test-Path -Path $DownloadZipFile
if ($exists -eq $false)
{
    # download the librdkafka nupkg to the archive folder
    Invoke-RestMethod -Uri $Url -OutFile $DownloadZipFile
}

# load ZIP methods
Add-Type -AssemblyName System.IO.Compression.FileSystem

# open ZIP archive for reading
$zip = [System.IO.Compression.ZipFile]::OpenRead($DownloadZipFile)

# Extract all .dll files in .nupkg for Windows 64 bit
$zip.Entries | 
  Where-Object { $_.FullName -like $DllFilter } |
  Where-Object { $_.FullName -like $Nt64Filter } |
  ForEach-Object { 
    # extract the selected items from the ZIP archive
    # and copy them to the out folder
    $FileName = $_.Name
    [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, "$ExtractPath/$FileName", $true)
    }
    
# close ZIP file
$zip.Dispose()

The libraries are created under application-working-dir\librdkafka\libs.