The thread
plugin helper manages threads and these threads are integrated with plugins. No need manual run or shutdown in the plugin.
Here is an example:
require 'fluent/plugin/output'
module Fluent::Plugin
class ExampleOutput < Output
Fluent::Plugin.register_output('example', self)
# 1. Load thread helper
helpers :thread
# Omit `configure`, `shutdown` and other plugin APIs
def start
super
# 2. Create and run thread with unique name.
thread_create(:example_thread_run, &method(:run))
end
def run
# ...
end
end
end
The launched thread is managed by the plugin helper. No need of thread shutdown code in plugin's shutdown
method. It shutdowns the launched threads automatically.
This method creates a thread and runs it with the given routine.
title
must be unique.
# Pass block directly
thread_create(:example_plugin_main) {
# ...
}
# Pass method object with existing method
thread_create(:foo_plugin_body, &method(:run))
def run
# ...
end
Checks whether the current thread is running or not. This method is available in the running block.
thread_create(:example_plugin_main) {
while thread_current_running?
# ...
end
}
If this article is incorrect or outdated, or omits critical information, please let us know. Fluentd is an open-source project under Cloud Native Computing Foundation (CNCF). All components are available under the Apache 2 License.