Control Bus Controller

Starting with version 6.4, the HTTP module provides an @EnableControlBusController configuration class annotation to expose the ControlBusController as a REST service at the /control-bus path. The ControlBusControllerConfiguration underneath enables eager initialization for the ControlBusCommandRegistry to expose all the available control bus commands for the mentioned REST service. The /control-bus GET request returns all the control bus commands for the application in a format like this:

[
  {
    "beanName": "errorChannel",
    "commands": [
      {
        "command": "errorChannel.setShouldTrack",
        "description": "setShouldTrack",
        "parameterTypes": [
          "boolean"
        ]
      },
      {
        "command": "errorChannel.setLoggingEnabled",
        "description": "Use to disable debug logging during normal message flow",
        "parameterTypes": [
          "boolean"
        ]
      },
      {
        "command": "errorChannel.isLoggingEnabled",
        "description": "isLoggingEnabled",
        "parameterTypes": []
      }
    ]
  },
  {
    "beanName": "testManagementComponent",
    "commands": [
      {
        "command": "testManagementComponent.operation2",
        "description": "operation2",
        "parameterTypes": []
      },
      {
        "command": "testManagementComponent.operation",
        "description": "operation",
        "parameterTypes": []
      },
      {
        "command": "testManagementComponent.operation",
        "description": "operation",
        "parameterTypes": [
          "int",
          "java.lang.String"
        ]
      },
      {
        "command": "testManagementComponent.operation",
        "description": "operation",
        "parameterTypes": [
          "int"
        ]
      }
    ]
  }
]

Essentially, a JSON-serialized list of ControlBusController.ControlBusBean instances. Each entry is a bean with a list of control bus eligible methods (see ControlBusMethodFilter for more information) with their parameter types and description from the @ManagedOperation or @ManagedAttribute (falls back to method name otherwise).

The POST method to /control-bus/{beanName.methodName} invokes the command. The body of the request may contain a list of values and their types for command to execute. For example, the operation command with int argument for the class:

@ManagedResource
class TestManagementComponent {

    @ManagedOperation
    public void operation() {

    }

    @ManagedOperation(description = "The overloaded operation with int argument")
    public void operation(int input) {

    }

    @ManagedOperation(description = "The overloaded operation with two arguments")
    public void operation(int input1, String input2) {

    }

    @ManagedOperation
    public int operation2() {
    	return 123;
    }

}

could be called like /testManagementComponent.operation using mention POST method with body:

[
    {
        "value": "1",
        "parameterType": "int"
    }
]

See Control Bus for more information.