我想逐行读取文件,只将行放入队列中。 该过程有效但在队列中还有很多其他信息,例如版本等。
你有什么想法吗?
这是我的配置文件:
input {
file {
codec => plain
path => "/apps/*.txt"
}
}
filter{
}
output {
stomp {
host => "localhost"
port => "61613"
destination => "stomp-test"
debug => "true"
headers => {
"amq-msg-type" => "text"
"my_custom_header" => "kutya"
}
}
}
example.txt包含: 这是我的测试行!
MQ正文包含: {“message”:“这是我的测试行!”,“@ version”:“1”,“@ timestamp”:“2017-01-21T13:42:21.084Z”,“path”:“/ apps / 1 .TXT”, “宿主”: “OL7”}
我的预期结果应该是: 这是我的测试行!
提前致谢。
答案 0 :(得分:1)
目前的stomp
输出只会将JSON写入目标队列,如该插件的in the source code所示:
t.send(event.sprintf(@destination), event.to_json, headers)
^
|
writes JSON
您可以做的最好的事情是使用mutate/remove_field
filter删除所有其他字段,如下所示:
filter {
mutate {
remove_field => ["@timestamp", "@version", "path", "host"]
}
}
然后你只能在你的目的地队列中得到这个:
{"message":"This is my test row!"}
答案 1 :(得分:0)
我在寻找类似解决方案时遇到了这个问题。
您的问题可以使用编解码器解决。
将此行添加到您的输出中:
codec => line { format => "%{message}"}
它看起来像这样:
output {
stomp {
host => "localhost"
port => "61613"
destination => "stomp-test"
debug => "true"
codec => line { format => "%{message}"}
headers => {
"amq-msg-type" => "text"
"my_custom_header" => "kutya"
}
}
}