Ich habe ein benutzerdefiniertes Filter-Plugin für Logstash geschrieben, um eine Java-Klasse aufzurufen.Logstash benutzerdefinierte Eingabe-Plugin zum Aufruf Java-Klasse
Voraussetzung:
Eingang Plugin: lesen aus der Warteschlange
Benutzerdefinierte Plugin: Für jede Nachricht in der Warteschlange der Klasse Java rufen
**Code:**
# encoding: utf-8
require "logstash/filters/base"
require "logstash/namespace"
require "java"
require "test.jar"
class LogStash::Filters::Example < LogStash::Filters::Base
config_name "example"
public
def register
end # def register
public
def filter(event)
object = Java::Com.test.Test.new
a = object.readMessage(event.get("message"))
event.set("message",a)
filter_matched(event)
end # def filter
end # class LogStash::Filters::Example
Problem: Gibt es eine Möglichkeit dass ich die Java-Klasse nur einmal instanziieren kann? Für jede Nachricht, die ich aus der Warteschlange lese, möchte ich keine neue Instanz der Java-Klasse erstellen, sondern sie während des Logstash-Starts instantiieren und das gleiche Objekt für alle eingehenden Nachrichten verwenden.
Dank. Du hast meinen Tag gerettet! – minion