Class OperationInvokingMessageHandler

All Implemented Interfaces:
org.reactivestreams.Subscriber<Message<?>>, Aware, BeanClassLoaderAware, BeanFactoryAware, BeanNameAware, DisposableBean, InitializingBean, ApplicationContextAware, Ordered, ComponentSourceAware, ExpressionCapable, Orderable, MessageProducer, HeaderPropagationAware, IntegrationPattern, NamedComponent, IntegrationManagement, TrackableComponent, MessageHandler, reactor.core.CoreSubscriber<Message<?>>

public class OperationInvokingMessageHandler extends AbstractReplyProducingMessageHandler
A MessageHandler implementation for invoking JMX operations based on the Message sent to its AbstractMessageHandler.handleMessage(Message) method. Message headers will be checked first when resolving the 'objectName' and 'operationName' to be invoked on an MBean. These values would be supplied with the Message headers defined as JmxHeaders.OBJECT_NAME and JmxHeaders.OPERATION_NAME, respectively. In either case, if no header is present, the value resolution will fallback to the defaults, if any have been configured on this instance via setObjectName(String) and setOperationName(String), respectively.

The operation parameter(s), if any, must be available within the payload of the Message being handled. If the target operation expects multiple parameters, they can be provided in either a List or Map typed payload.

Since:
2.0
Author:
Mark Fisher, Oleg Zhurakousky, Gary Russell, Artem Bilan, Trung Pham
  • Constructor Details

  • Method Details

    • setObjectName

      public void setObjectName(String objectName)
      Specify a default ObjectName to use when no such header is available on the Message being handled.
      Parameters:
      objectName - The object name.
    • setOperationName

      public void setOperationName(String operationName)
      Specify an operation name to be invoked when no such header is available on the Message being handled.
      Parameters:
      operationName - The operation name.
    • setExpectReply

      public void setExpectReply(boolean expectReply)
      Specify whether a reply Message is expected. If not, this handler will simply return null for a successful response or throw an Exception for a non-successful response. The default is true.
      Parameters:
      expectReply - true if a reply is expected.
      Since:
      4.3.20
    • getComponentType

      public String getComponentType()
      Description copied from class: IntegrationObjectSupport
      Subclasses may implement this method to provide component type information.
      Specified by:
      getComponentType in interface NamedComponent
      Overrides:
      getComponentType in class MessageHandlerSupport
    • getIntegrationPatternType

      public IntegrationPatternType getIntegrationPatternType()
      Description copied from interface: IntegrationPattern
      Return a pattern type this component implements.
      Specified by:
      getIntegrationPatternType in interface IntegrationPattern
      Overrides:
      getIntegrationPatternType in class AbstractReplyProducingMessageHandler
      Returns:
      the IntegrationPatternType this component implements.
    • handleRequestMessage

      protected Object handleRequestMessage(Message<?> requestMessage)
      Description copied from class: AbstractReplyProducingMessageHandler
      Subclasses must implement this method to handle the request Message. The return value may be a Message, a MessageBuilder, or any plain Object. The base class will handle the final creation of a reply Message from any of those starting points. If the return value is null, the Message flow will end here.
      Specified by:
      handleRequestMessage in class AbstractReplyProducingMessageHandler
      Parameters:
      requestMessage - The request message.
      Returns:
      The result of handling the message, or null.