【问题标题】:Problem with Logstash-Plug in-JMS and Weblogic 12.2.1Logstash-Plug in-JMS 和 Weblogic 12.2.1 的问题
【发布时间】:2020-05-17 05:49:34
【问题描述】:

我已经安装了 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

【问题讨论】:

    标签: jms logstash weblogic


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      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"
      

      【讨论】:

      • 感谢贾斯汀的回复!我也尝试过使用destination =>“./DemoQ”,但是分布式队列仍然无法识别..也许我应该在路径中放置一个JMS服务器或一个模块? Logstash 的输出是 ''' root_cause=>{:exception=>"Java::WeblogicJmsCommon::JMSException", :exception_message=>"[JMSExceptions:045102]在 WebLogic Server 上找不到名为 \"DemoQ\" 的目标实例 \"AdminServer\"."}} '''
      猜你喜欢
      • 2018-12-04
      • 2017-03-18
      • 2016-11-29
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-26
      • 1970-01-01
      相关资源
      最近更新 更多