Logstash-Plug-in-JMS 和 Weblogic 12.2.1 的问题



我已经安装了Weblogic 12.2.1和最新的Logstash 7.5.2版本以及JMS插件v3.1.2。我正在努力使用 JMS 插件,我已经设置了 .conf 和 .yml,但它不起作用!

destination字段中,文档和示例建议没有JNDI名称,只有队列或主题名称!

jms.conf的输入:

input {
jms {
pub_sub => false
include_header => false
include_properties => false
include_body => true
use_jms_timestamp => false
yaml_file => "/home/chris/Downloads/logstash-7.5.2/config/jms.yml"
yaml_section => "weblogic"
destination => "DemoQ"
}
}

jms.yml

weblogic:
:jndi_name: jms/DemoCF
:jndi_context:
java.naming.factory.initial: weblogic.jndi.WLInitialContextFactory
java.naming.provider.url: t3://localhost:7001
java.naming.factory.url.pkgs: javax.naming:javax.jms
java.naming.security.principal: weblogic
java.naming.security.credentials: *****!
:require_jars:
- /home/chris/Downloads/wlogic/fmw_12.2.1.0.0_wls_quick_Disk1_1of1/wls12210/wlserver/server/lib/wlthint3client.jar
- /home/chris/Downloads/wlogic/fmw_12.2.1.0.0_wls_quick_Disk1_1of1/wls12210/wlserver/server/lib/wljmsclient.jar
- /home/chris/Downloads/wlogic/fmw_12.2.1.0.0_wls_quick_Disk1_1of1/wls12210/wlserver/server/lib/wlclient.jar

和洛格斯塔什的输出:

[2020-01-31T14:50:10,284][WARN ][logstash.inputs.jms ][main] JMS Consumer Died {:exception=>"Java::WeblogicJmsCommon::JMSException", :exception_message=>"[JMSExceptions:045101]The destination name passed to the createTopic or createQueue "DemoQ" is invalid. If the destination name does not contain a "/" character, then it must be the name of a distributed destination that is available in the cluster to which the client is attached. If it does contain a "/" character, then the string before the "/" must be the name of a JMS server or a ".". The string after the "/" is the name of a the desired destination. If the "./" version of the string is used then any destination with the given name on the local WebLogic Server instance

几天后我想通了!在目的地使用领域:jmsmodulename!destinationname(来自 Oracle 的文档( , 对于集群环境!! 既不是"/">也不是"./">

Logstash 不使用 JNDI 来查找目标,而是简单地使用 JMS API 调用 javax.jms.Session.createQueue(((如果pubsubfalse(或 javax.jms.Session.createTopic(((如果pubsubtrue(。

虽然我对WebLogic不是很熟悉,但它返回的错误消息似乎很清楚:

传递给 createTopic 或 createQueue "DemoQ" 的目标名称无效。如果目标名称不包含"/"字符,则它必须是客户端连接到的群集中可用的分布式目标的名称。如果它确实包含"/"字符,则"/"前面的字符串必须是 JMS 服务器的名称或"."。"/"后面的字符串是所需目标的名称。如果使用字符串的"./"版本,则本地 WebLogic Server 实例上具有给定名称的任何目标

它表示您的配置无效,特别是以下位:

destination => "DemoQ"

它似乎还建议您改用它:

destination => "./DemoQ"

最新更新