Class ZeroMqMessageHandler

java.lang.Object
org.springframework.integration.context.IntegrationObjectSupport
org.springframework.integration.handler.MessageHandlerSupport
org.springframework.integration.handler.AbstractReactiveMessageHandler
org.springframework.integration.zeromq.outbound.ZeroMqMessageHandler
All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.BeanNameAware, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.InitializingBean, org.springframework.context.ApplicationContextAware, org.springframework.core.Ordered, org.springframework.integration.context.ExpressionCapable, org.springframework.integration.context.Orderable, org.springframework.integration.IntegrationPattern, org.springframework.integration.support.context.NamedComponent, org.springframework.integration.support.management.IntegrationManagement, org.springframework.integration.support.management.TrackableComponent, org.springframework.messaging.ReactiveMessageHandler

public class ZeroMqMessageHandler
extends org.springframework.integration.handler.AbstractReactiveMessageHandler
The AbstractReactiveMessageHandler implementation for publishing messages over ZeroMq socket. Only SocketType.PAIR, SocketType.PUB and SocketType.PUSH are supported. This component is only connecting (no Binding) to another side, e.g. ZeroMq proxy.

When the SocketType.PUB is used, the topicExpression is evaluated against a request message to inject a topic frame into a ZeroMq message if it is not null. The subscriber side must receive the topic frame first before parsing the actual data.

When the payload of the request message is a ZMsg, no any conversion and topic extraction happen: the ZMsg is sent into a socket as is and it is not destroyed for possible further reusing.

Since:
5.4
  • Nested Class Summary

    Nested classes/interfaces inherited from interface org.springframework.integration.support.management.IntegrationManagement

    org.springframework.integration.support.management.IntegrationManagement.ManagementOverrides
  • Field Summary

    Fields inherited from class org.springframework.integration.context.IntegrationObjectSupport

    EXPRESSION_PARSER, logger

    Fields inherited from interface org.springframework.integration.support.management.IntegrationManagement

    METER_PREFIX, RECEIVE_COUNTER_NAME, SEND_TIMER_NAME

    Fields inherited from interface org.springframework.core.Ordered

    HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
  • Constructor Summary

    Constructors 
    Constructor Description
    ZeroMqMessageHandler​(org.zeromq.ZContext context, java.lang.String connectUrl)
    Create an instance based on the provided ZContext and connection string.
    ZeroMqMessageHandler​(org.zeromq.ZContext context, java.lang.String connectUrl, org.zeromq.SocketType socketType)
    Create an instance based on the provided ZContext, connection string and SocketType.
  • Method Summary

    Modifier and Type Method Description
    void destroy()  
    java.lang.String getComponentType()  
    protected reactor.core.publisher.Mono<java.lang.Void> handleMessageInternal​(org.springframework.messaging.Message<?> message)  
    protected void onInit()  
    void setMessageConverter​(org.springframework.messaging.converter.MessageConverter messageConverter)
    Provide a MessageConverter (as an alternative to messageMapper) for converting a request message into byte[] for sending into ZeroMq socket.
    void setMessageMapper​(org.springframework.integration.mapping.OutboundMessageMapper<byte[]> messageMapper)
    Provide an OutboundMessageMapper to convert a request message into byte[] for sending into ZeroMq socket.
    void setSocketConfigurer​(java.util.function.Consumer<org.zeromq.ZMQ.Socket> socketConfigurer)
    Provide a Consumer to configure a socket with arbitrary options, like security.
    void setTopic​(java.lang.String topic)
    Specify a topic the SocketType.PUB socket is going to use for distributing messages into the subscriptions.
    void setTopicExpression​(org.springframework.expression.Expression topicExpression)
    Specify a SpEL expression to evaluate a topic a SocketType.PUB is going to use for distributing messages into the subscriptions.It is ignored for all other SocketTypes supported.

    Methods inherited from class org.springframework.integration.handler.AbstractReactiveMessageHandler

    handleMessage

    Methods inherited from class org.springframework.integration.handler.MessageHandlerSupport

    buildSendTimer, getIntegrationPatternType, getManagedName, getManagedType, getMetricsCaptor, getOrder, getOverrides, isLoggingEnabled, registerMetricsCaptor, sendTimer, setLoggingEnabled, setManagedName, setManagedType, setOrder, setShouldTrack, shouldTrack

    Methods inherited from class org.springframework.integration.context.IntegrationObjectSupport

    afterPropertiesSet, extractTypeIfPossible, generateId, getApplicationContext, getApplicationContextId, getBeanDescription, getBeanFactory, getBeanName, getChannelResolver, getComponentName, getConversionService, getExpression, getIntegrationProperties, getIntegrationProperty, getMessageBuilderFactory, getTaskScheduler, isInitialized, setApplicationContext, setBeanFactory, setBeanName, setChannelResolver, setComponentName, setConversionService, setMessageBuilderFactory, setPrimaryExpression, setTaskScheduler, toString

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface org.springframework.integration.support.management.IntegrationManagement

    getThisAs

    Methods inherited from interface org.springframework.integration.support.context.NamedComponent

    getBeanName, getComponentName
  • Constructor Details

    • ZeroMqMessageHandler

      public ZeroMqMessageHandler​(org.zeromq.ZContext context, java.lang.String connectUrl)
      Create an instance based on the provided ZContext and connection string.
      Parameters:
      context - the ZContext to use for creating sockets.
      connectUrl - the URL to connect the socket to.
    • ZeroMqMessageHandler

      public ZeroMqMessageHandler​(org.zeromq.ZContext context, java.lang.String connectUrl, org.zeromq.SocketType socketType)
      Create an instance based on the provided ZContext, connection string and SocketType.
      Parameters:
      context - the ZContext to use for creating sockets.
      connectUrl - the URL to connect the socket to.
      socketType - the SocketType to use; only SocketType.PAIR, SocketType.PUB and SocketType.PUSH are supported.
  • Method Details

    • setMessageMapper

      public void setMessageMapper​(org.springframework.integration.mapping.OutboundMessageMapper<byte[]> messageMapper)
      Provide an OutboundMessageMapper to convert a request message into byte[] for sending into ZeroMq socket. Ignored when Message.getPayload() is an instance of ZMsg.
      Parameters:
      messageMapper - the OutboundMessageMapper to use.
    • setMessageConverter

      public void setMessageConverter​(org.springframework.messaging.converter.MessageConverter messageConverter)
      Provide a MessageConverter (as an alternative to messageMapper) for converting a request message into byte[] for sending into ZeroMq socket. Ignored when Message.getPayload() is an instance of ZMsg.
      Parameters:
      messageConverter - the MessageConverter to use.
    • setSocketConfigurer

      public void setSocketConfigurer​(java.util.function.Consumer<org.zeromq.ZMQ.Socket> socketConfigurer)
      Provide a Consumer to configure a socket with arbitrary options, like security.
      Parameters:
      socketConfigurer - the configurer for socket options.
    • setTopic

      public void setTopic​(java.lang.String topic)
      Specify a topic the SocketType.PUB socket is going to use for distributing messages into the subscriptions. It is ignored for all other SocketTypes supported.
      Parameters:
      topic - the topic to use.
    • setTopicExpression

      public void setTopicExpression​(org.springframework.expression.Expression topicExpression)
      Specify a SpEL expression to evaluate a topic a SocketType.PUB is going to use for distributing messages into the subscriptions.It is ignored for all other SocketTypes supported.
      Parameters:
      topicExpression - the expression to evaluate topic for publishing.
    • getComponentType

      public java.lang.String getComponentType()
      Specified by:
      getComponentType in interface org.springframework.integration.support.context.NamedComponent
      Overrides:
      getComponentType in class org.springframework.integration.handler.MessageHandlerSupport
    • onInit

      protected void onInit()
      Overrides:
      onInit in class org.springframework.integration.context.IntegrationObjectSupport
    • handleMessageInternal

      protected reactor.core.publisher.Mono<java.lang.Void> handleMessageInternal​(org.springframework.messaging.Message<?> message)
      Specified by:
      handleMessageInternal in class org.springframework.integration.handler.AbstractReactiveMessageHandler
    • destroy

      public void destroy()
      Specified by:
      destroy in interface org.springframework.beans.factory.DisposableBean
      Specified by:
      destroy in interface org.springframework.integration.support.management.IntegrationManagement
      Overrides:
      destroy in class org.springframework.integration.handler.MessageHandlerSupport