Help!
Read below for tips. If you still need help, you can:
- Ask your question in The Karafka official Slack channel
- Open a GitHub issue. (Don't be afraid to open an issue, even if it's not a Karafka bug. An issue is just a conversation, not an accusation!)
- Check our FAQ and the Pro FAQ
You should not email any Karafka committer privately.
Please respect our time and efforts by sticking to one of the options above.
Please consider buying the Pro subscription for additional priority Pro support and extra features.
Reporting problems
When you encounter issues with Karafka, there are several things you can do:
- Feel free to open a Github issue
- Feel free to ask on our Slack channel
- Use our integration specs and example apps to create a reproduction code that you can then share with us.
Debugging
Remember that Karafka uses the info
log level by default. If you assign it a logger with debug,
debug will be used.
Here are a few guidelines that you should follow when trying to create a reproduction script:
- Use as few non-default gems as possible to eliminate issues emerging from other libraries.
- Try setting the
concurrency
value to1
- this will simplify the processing flow.
class KarafkaApp < Karafka::App
setup do |config|
config.concurrency = 1
end
end
- Use a single topic with a single partition (so Karafka does not create extensive concurrent jobs).
class KarafkaApp < Karafka::App
setup do |config|
# ...
end
routes.draw do
# Disable other topics for debug...
# topic :shippings do
# consumer ShippingsConsumer
# end
topic :orders do
consumer OrdersConsumer
end
end
end
- If the issue is related to Active Job or Ruby on Rails, try using the latest stable release.
- Check the Versions Lifecycle and EOL page to make sure that your Ruby and Ruby on Rails (if used) combination is supported.
- Try disabling all Karafka components that may be irrelevant to the issue, like extensive listeners and other hooks.
- You can use
TTIN
signal to print a backtrace of all the Karafka threads if Karafka appears to be hanging or dead. For this to work, theLoggerListener
needs to be enabled. - If you are interested/need extensive
librdkafka
debug info, you can set the kafkadebug
flag toall
or one of the following values:generic
,broker
,topic
,metadata
,feature
,queue
,msg
,protocol
,cgrp
,security
,fetch
,interceptor
,plugin
,consumer
,admin
,eos
,mock
,assignor
,conf
,all
.
class KarafkaApp < Karafka::App
setup do |config|
config.kafka = {
'bootstrap.servers': '127.0.0.1:9092',
# other settings...
debug: 'all'
}
end
end