I was reading through JMS as input plugin for Logstash.
Post reading the documentation i was trying to setup a Logstash EMS listener for Tibco JMS provider with JNDI configuration.
Although the official elastic-matrix mentions the support of JMS input plugin is only supported for Active MQ, Active MQ Artemis and Solace -> https://www.elastic.co/support/matrix#matrix_logstash_plugins
But digging up more into this i also found a query-solution for the same -> https://github.com/logstash-plugins/logstash-input-jms/issues/11
The configuration mentioned in the above github issue link states that the jndi_name => ConnectionFactory
While doing the same for my setup it was unable to lookup the destination.
I figured that the Instance of Tibco JMS is setup such that each connection to the Topic/Queue requires a registered ClientId which in turns takes the place of jndi_name and this successfully looks up the Subcriber and connects to the broker using the Subscriber password.
Nw the problem that i face is its unable to lookup the destination Topic/Queue.
JMS internally tries to create the Topic/Queue when it cannot locate it and hence throws an error ->
exception _message => “Method createTopic() not supported for dynamic topic creation — this has to be done with JNDI lookup()”
Unable to find out the exact issue here. (would be great to know if Tibco is actually supported)
For reference, My JMS config
input {
jms {
include_header => true
include_properties => true
include_body => true
use_jms_timestamp => true
destination => “CM.GLBL.EVENT.T” (The name of my topic)
pub_sub => true
yaml_file => “D:/logstash/config/jndiems.yml”
yaml_section => “ems”
}
}
output {
stdout { codec => json }
}
// My jndiems.yml file
ems:
:username: “subscriber_username”
:password: “subscriber_password”
:jndi_name: “CM.GLBL::EVENT.Subscriber.ID1” (client id for the connection to the Topic/Queue)
:jndi_context:
java.naming.factory.initial: javax.naming.api.InitialContextFactory
java.naming.provider.url: “ldap://global.name.com/dc=global,dc=name,dc=com”
java.naming.security.principal: “CN=adminjms,OU=Users,OU=Global,DC=global,DC=name,DC=com”
java.naming.security.credentials: “jms@dmin”
:require_jars:
- “D:/logstash/config/lib/tibjms-4.4.1.jar”
- “D:/logstash/config/lib/jms-1.1.jar”
- “D:/logstash/config/lib/commons-lang-2.6.jar”