JMS和Weblogic 12.2.1中的Logstash插件存在问题

JMS和Weblogic 12.2.1中的Logstash插件存在问题,jms,logstash,weblogic,Jms,Logstash,Weblogic,我已经安装了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 =&

我已经安装了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
以及Logstash的输出:

[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

Logstash不使用JNDI来查找目标,而是简单地使用JMS API来调用(如果
pubsub
is
false
)或(如果
pubsub
is
true

虽然我不太熟悉WebLogic,但它返回的错误消息似乎非常清楚:

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

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

destination => "DemoQ"
它似乎也建议您改用此选项:

destination => "./DemoQ"

过了几天我才明白这一点!在目的地使用领域: jmsmodulename!destinationname(来自Oracle的文档), 对于群集环境!!
既不“/”也不“/”

谢谢贾斯汀的回复!!我还尝试了destination=>“/DemoQ”,但分布式队列仍然无法识别。。也许我应该在路径中放置JMS服务器或模块?Logstash的输出为“”'root_cause=>{:exception=>“Java::WeblogicJmsCommon::jmsception”,:exception_message=>“[jmsceptions:045102]在WebLogic服务器实例\“AdminServer\”}上找不到名为“DemoQ”的目标。”