diff --git a/lib/racecar/runner.rb b/lib/racecar/runner.rb
index <HASH>..<HASH> 100644
--- a/lib/racecar/runner.rb
+++ b/lib/racecar/runner.rb
@@ -93,7 +93,7 @@ module Racecar
         "statistics.interval.ms" => 1000,
       }
       producer_config["compression.codec"] = config.producer_compression_codec.to_s unless config.producer_compression_codec.nil?
-      producer_config.merge(config.rdkafka_producer)
+      producer_config.merge!(config.rdkafka_producer)
       producer_config
     end
 
diff --git a/spec/runner_spec.rb b/spec/runner_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/runner_spec.rb
+++ b/spec/runner_spec.rb
@@ -233,6 +233,14 @@ RSpec.describe Racecar::Runner do
 
     include_examples "offset handling", "greetings"
 
+    it "builds producer with all config options" do
+      config.producer = ["hello=world", "hi=all"]
+
+      runner.run
+
+      expect(Rdkafka::Config).to have_received(:new).with(hash_including("hello" => "world", "hi" => "all"))
+    end
+
     it "processes messages with the specified consumer class" do
       kafka.deliver_message("hello world", topic: "greetings")
fix bug where rdkafka producer config was ignored