Created
July 13, 2020 21:28
-
-
Save maelfosso/48e9595d923e942496066da418de9b12 to your computer and use it in GitHub Desktop.
I tried to set Karafka on a Ruby on rails application to be able to consumer and produce kafka message but it didn't work here are my configuration file
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# app/consumers/business_consumer.rb | |
class BusinessConsumer < ApplicationConsumer | |
def consume | |
Karafka.logger.info "New [Business] event: #{params}" | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Load the Rails application. | |
require_relative 'application' | |
require Rails.root.join(Karafka.boot_file) | |
# Initialize the Rails application. | |
Rails.application.initialize! |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# frozen_string_literal: true | |
# require_relative './app/consumers/business_consumer' | |
ENV['RAILS_ENV'] ||= 'development' | |
ENV['KARAFKA_ENV'] = ENV['RAILS_ENV'] | |
require ::File.expand_path('../config/environment', __FILE__) | |
Rails.application.eager_load! | |
# This lines will make Karafka print to stdout like puma or unicorn | |
if Rails.env.development? | |
Rails.logger.extend( | |
ActiveSupport::Logger.broadcast( | |
ActiveSupport::Logger.new($stdout) | |
) | |
) | |
end | |
class KarafkaApp < Karafka::App | |
setup do |config| | |
config.kafka.seed_brokers = %w[kafka://192.168.8.102:9092] | |
config.client_id = 'nkapsi_accounts_development' | |
config.logger = Rails.logger | |
end | |
# Comment out this part if you are not using instrumentation and/or you are not | |
# interested in logging events for certain environments. Since instrumentation | |
# notifications add extra boilerplate, if you want to achieve max performance, | |
# listen to only what you really need for given environment. | |
# Karafka.monitor.subscribe(WaterDrop::Instrumentation::StdoutListener.new) | |
# Karafka.monitor.subscribe(Karafka::Instrumentation::StdoutListener.new) | |
# Karafka.monitor.subscribe(Karafka::Instrumentation::ProctitleListener.new) | |
# Uncomment that in order to achieve code reload in development mode | |
# Be aware, that this might have some side-effects. Please refer to the wiki | |
# for more details on benefits and downsides of the code reload in the | |
# development mode | |
# | |
# Karafka.monitor.subscribe( | |
# Karafka::CodeReloader.new( | |
# *Rails.application.reloaders | |
# ) | |
# ) | |
consumer_groups.draw do | |
topic :business do | |
# consumer ExampleConsumer | |
# Karafka.logger.info "New [Business] event: #{params}" | |
consumer BusinessConsumer | |
end | |
# consumer_group :bigger_group do | |
# topic :test do | |
# consumer TestConsumer | |
# end | |
# | |
# topic :test2 do | |
# consumer Test2Consumer | |
# end | |
# end | |
end | |
end | |
Karafka.monitor.subscribe('app.initialized') do | |
# Put here all the things you want to do after the Karafka framework | |
# initialization | |
end | |
KarafkaApp.boot! |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# config/initializers/karafka_init.rb | |
# | |
# I then | |
class KarafkaApp < Karafka::App | |
setup do |config| | |
config.kafka.seed_brokers = %w[kafka://192.168.8.100:9092] | |
config.client_id = 'nkapsi_accounts_development' | |
# config.logger = Rails.logger | |
end | |
# Comment out this part if you are not using instrumentation and/or you are not | |
# interested in logging events for certain environments. Since instrumentation | |
# notifications add extra boilerplate, if you want to achieve max performance, | |
# listen to only what you really need for given environment. | |
# Karafka.monitor.subscribe(WaterDrop::Instrumentation::StdoutListener.new) | |
# Karafka.monitor.subscribe(Karafka::Instrumentation::StdoutListener.new) | |
# Karafka.monitor.subscribe(Karafka::Instrumentation::ProctitleListener.new) | |
# Uncomment that in order to achieve code reload in development mode | |
# Be aware, that this might have some side-effects. Please refer to the wiki | |
# for more details on benefits and downsides of the code reload in the | |
# development mode | |
# | |
# Karafka.monitor.subscribe( | |
# Karafka::CodeReloader.new( | |
# *Rails.application.reloaders | |
# ) | |
# ) | |
consumer_groups.draw do | |
topic :business do | |
# consumer ExampleConsumer | |
# Karafka.logger.info "New [Business] event: #{params}" | |
consumer BusinessConsumer | |
end | |
# consumer_group :bigger_group do | |
# topic :test do | |
# consumer TestConsumer | |
# end | |
# | |
# topic :test2 do | |
# consumer Test2Consumer | |
# end | |
# end | |
end | |
end | |
Karafka.monitor.subscribe('app.initialized') do | |
# Put here all the things you want to do after the Karafka framework | |
# initialization | |
end | |
KarafkaApp.boot! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment