Listing Camel Routes deployed on ServiceMix

Here’s a simple groovy script to show deployed Apache Camel routes. It uses JMX to query the description of routes available.

import javax.management.*
import javax.management.remote.*
import javax.lang.management.*

def prettyPrint = { s ->
  ps = ""
  level = 0
  for(c in s){
    if(c == '['){
      level++
      ps += "[n".padRight(level*4," ")
    } else if(c == ']'){
      level--
      ps += "]"
    } else if(c == ','){
      ps += ",n".padRight(level*4," ")
    } else {
      ps += c
    }
  }
  return ps
}

def serverUrl = 'service:jmx:rmi:///jndi/rmi://localhost:1099/karaf-root'
def jmxUsername = 'smx'
def jmxPassword = 'smx'

def env = [(JMXConnector.CREDENTIALS): [jmxUsername,jmxPassword] as String[]]
def jmxUrl = new JMXServiceURL(serverUrl)
def connect = JMXConnectorFactory.connect(jmxUrl,env) 
def server = connect.MBeanServerConnection
def query = new ObjectName('org.apache.camel:type=routes,*')
def routes = server.queryNames(query,null)

routes.each { route ->
    def routeBean = new GroovyMBean(server,route)
    printf "%250sn", prettyPrint(routeBean.Description)
}             

Here’s an example of the output generated by this script:

EventDrivenConsumerRoute[
  Endpoint[
      activemq://topic:STOCKS.TOPIC?clientId=1&durableSubscriptionName=dsn1&selector=SE%3D%27NASDAQ%27] -> Instrumentation:route[
      UnitOfWork(Pipeline[
          [
              Channel[
                  sendTo(Endpoint[
                      log://stocks.out?showAll=true])],
               Channel[
                  sendTo(Endpoint[
                      activemq://queue:STOCKS.NASDAQ])]]])]]

EventDrivenConsumerRoute[
  Endpoint[
      activemq://queue:STOCKS.IN] -> Instrumentation:route[
      UnitOfWork(Pipeline[
          [
              Channel[
                  sendTo(Endpoint[
                      log://stocks.in?showAll=true])],
               Channel[
                  sendTo(Endpoint[
                      activemq://topic:STOCKS.TOPIC])]]])]]
blog comments powered by Disqus