This version is still in development and is not considered stable yet. For the latest stable version, please use Spring Integration 6.3.4!

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.