Class RabbitConnectionFactoryBean

java.lang.Object
org.springframework.beans.factory.config.AbstractFactoryBean<com.rabbitmq.client.ConnectionFactory>
org.springframework.amqp.rabbit.connection.RabbitConnectionFactoryBean
All Implemented Interfaces:
Aware, BeanClassLoaderAware, BeanFactoryAware, DisposableBean, FactoryBean<com.rabbitmq.client.ConnectionFactory>, InitializingBean

public class RabbitConnectionFactoryBean extends AbstractFactoryBean<com.rabbitmq.client.ConnectionFactory>
Factory bean to create a RabbitMQ ConnectionFactory, delegating most setter methods and optionally enabling SSL, with or without certificate validation. When sslPropertiesLocation is not null, the default implementation loads a PKCS12 keystore and a JKS truststore using the supplied properties and initializes key and trust manager factories, using algorithm SunX509 by default. These are then used to initialize an SSLContext using the sslAlgorithm (default TLSv1.2, falling back to TLSv1.1, if 1.2 is not available).

Override createSSLContext() to create and/or perform further modification of the context.

Override setUpSSL() to take complete control over setting up SSL.

Since:
1.4
Author:
Gary Russell, Heath Abelson, Arnaud Cogoluègnes, Hareendran, Dominique Villard, Zachary DeLuca, Ngoc Nhan
  • Field Details Link icon

    • connectionFactory Link icon

      protected final com.rabbitmq.client.ConnectionFactory connectionFactory
  • Constructor Details Link icon

    • RabbitConnectionFactoryBean Link icon

      public RabbitConnectionFactoryBean()
  • Method Details Link icon

    • isSkipServerCertificateValidation Link icon

      public boolean isSkipServerCertificateValidation()
      Whether or not Server Side certificate has to be validated or not.
      Returns:
      true if Server Side certificate has to be skipped
      Since:
      1.6.6
    • setSkipServerCertificateValidation Link icon

      public void setSkipServerCertificateValidation(boolean skipServerCertificateValidation)
      Whether or not Server Side certificate has to be validated or not. This would be used if useSSL is set to true and should only be used on dev or Qa regions skipServerCertificateValidation should never be set to true in production
      Parameters:
      skipServerCertificateValidation - Flag to override Server side certificate checks; if set to true TrustEverythingTrustManager would be used.
      Since:
      1.6.6
      See Also:
      • TrustEverythingTrustManager
    • setUseSSL Link icon

      public void setUseSSL(boolean useSSL)
      Whether or not the factory should be configured to use SSL.
      Parameters:
      useSSL - true to use SSL.
    • isUseSSL Link icon

      protected boolean isUseSSL()
      Returns:
      true to use ssl.
      Since:
      1.4.4.
    • setSslAlgorithm Link icon

      public void setSslAlgorithm(String sslAlgorithm)
      Set the algorithm to use; default TLSv1.1.
      Parameters:
      sslAlgorithm - the algorithm.
    • getSslAlgorithm Link icon

      protected String getSslAlgorithm()
      Returns:
      the ssl algorithm.
      Since:
      1.4.4
    • setSslPropertiesLocation Link icon

      public void setSslPropertiesLocation(Resource sslPropertiesLocation)
      When setUseSSL(boolean) is true, the SSL properties to use (optional). Resource referencing a properties file with the following properties:
      • keyStore=file:/secret/keycert.p12
      • trustStore=file:/secret/trustStore
      • keyStore.passPhrase=secret
      • trustStore.passPhrase=secret

      If this is provided, its properties (if present) will override the explicitly set property in this bean.

      Parameters:
      sslPropertiesLocation - the Resource to the ssl properties
    • getSslPropertiesLocation Link icon

      protected Resource getSslPropertiesLocation()
      Returns:
      the properties location.
      Since:
      1.4.4
    • getKeyStore Link icon

      protected String getKeyStore()
      Returns:
      the key store resource.
      Since:
      1.5
    • setKeyStore Link icon

      public void setKeyStore(String keyStore)
      Set the key store resource (e.g. file:/foo/keystore) - overrides the property in setSslPropertiesLocation(Resource). Ignored if setTrustStoreResource(Resource) is called with a resource.
      Parameters:
      keyStore - the keystore resource.
      Since:
      1.5
    • getKeyStoreResource Link icon

      protected Resource getKeyStoreResource()
    • setKeyStoreResource Link icon

      public void setKeyStoreResource(Resource keyStoreResource)
      Set a Resource pointing to the key store.
      Parameters:
      keyStoreResource - the resource.
      Since:
      1.6.4
    • getTrustStore Link icon

      protected String getTrustStore()
      Returns:
      the trust store resource.
      Since:
      1.5
    • setTrustStore Link icon

      public void setTrustStore(String trustStore)
      Set the key store resource (e.g. file:/foo/truststore) - overrides the property in setSslPropertiesLocation(Resource). Ignored if setTrustStoreResource(Resource) is called with a resource.
      Parameters:
      trustStore - the truststore resource.
      Since:
      1.5
    • getTrustStoreResource Link icon

      protected Resource getTrustStoreResource()
    • setTrustStoreResource Link icon

      public void setTrustStoreResource(Resource trustStoreResource)
      Set a Resource pointing to the trust store.
      Parameters:
      trustStoreResource - the resource.
      Since:
      1.6.4
    • getKeyStorePassphrase Link icon

      protected String getKeyStorePassphrase()
      Returns:
      the key store pass phrase.
      Since:
      1.5
    • setKeyStorePassphrase Link icon

      public void setKeyStorePassphrase(String keyStorePassphrase)
      Set the key store pass phrase - overrides the property in setSslPropertiesLocation(Resource).
      Parameters:
      keyStorePassphrase - the key store pass phrase.
      Since:
      1.5
    • getTrustStorePassphrase Link icon

      protected String getTrustStorePassphrase()
      Returns:
      the trust store pass phrase.
      Since:
      1.5
    • setTrustStorePassphrase Link icon

      public void setTrustStorePassphrase(String trustStorePassphrase)
      Set the trust store pass phrase - overrides the property in setSslPropertiesLocation(Resource).
      Parameters:
      trustStorePassphrase - the trust store pass phrase.
      Since:
      1.5
    • getKeyStoreType Link icon

      protected String getKeyStoreType()
      Get the key store type - this defaults to PKCS12 if not overridden by setSslPropertiesLocation(Resource) or setKeyStoreType(java.lang.String).
      Returns:
      the key store type.
      Since:
      1.6.2
    • setKeyStoreType Link icon

      public void setKeyStoreType(String keyStoreType)
      Set the key store type - overrides the property in setSslPropertiesLocation(Resource).
      Parameters:
      keyStoreType - the key store type.
      Since:
      1.6.2
      See Also:
    • getTrustStoreType Link icon

      protected String getTrustStoreType()
      Get the trust store type - this defaults to JKS if not overridden by setSslPropertiesLocation(Resource) or setTrustStoreType(java.lang.String).
      Returns:
      the trust store type.
      Since:
      1.6.2
    • setTrustStoreType Link icon

      public void setTrustStoreType(String trustStoreType)
      Set the trust store type - overrides the property in setSslPropertiesLocation(Resource).
      Parameters:
      trustStoreType - the trust store type.
      Since:
      1.6.2
      See Also:
    • getSecureRandom Link icon

      protected SecureRandom getSecureRandom()
    • setSecureRandom Link icon

      public void setSecureRandom(SecureRandom secureRandom)
      Set the secure random to use when initializing the SSLContext. Defaults to null, in which case the default implementation is used.
      Parameters:
      secureRandom - the secure random.
      Since:
      1.6.4
      See Also:
    • setHost Link icon

      public void setHost(String host)
      Parameters:
      host - the host.
      See Also:
      • ConnectionFactory.setHost(java.lang.String)
    • setPort Link icon

      public void setPort(int port)
      Parameters:
      port - the port.
      See Also:
      • ConnectionFactory.setPort(int)
    • setUsername Link icon

      public void setUsername(String username)
      Parameters:
      username - the user name.
      See Also:
      • ConnectionFactory.setUsername(java.lang.String)
    • setPassword Link icon

      public void setPassword(String password)
      Parameters:
      password - the password.
      See Also:
      • ConnectionFactory.setPassword(java.lang.String)
    • setCredentialsProvider Link icon

      public void setCredentialsProvider(com.rabbitmq.client.impl.CredentialsProvider provider)
      Set a credentials provider (e.g. OAUTH2).
      Parameters:
      provider - the provider.
      Since:
      2.3
    • setCredentialsRefreshService Link icon

      public void setCredentialsRefreshService(com.rabbitmq.client.impl.CredentialsRefreshService service)
      Set a refresh service.
      Parameters:
      service - the service.
      Since:
      2.3
    • setVirtualHost Link icon

      public void setVirtualHost(String virtualHost)
      Parameters:
      virtualHost - the virtual host.
      See Also:
      • ConnectionFactory.setVirtualHost(java.lang.String)
    • setUri Link icon

      public void setUri(URI uri)
      Parameters:
      uri - the uri.
      See Also:
      • ConnectionFactory.setUri(java.net.URI)
    • setUri Link icon

      public void setUri(String uriString)
      Parameters:
      uriString - the uri.
      See Also:
      • ConnectionFactory.setUri(java.lang.String)
    • setRequestedChannelMax Link icon

      public void setRequestedChannelMax(int requestedChannelMax)
      Parameters:
      requestedChannelMax - the max requested channels.
      See Also:
      • ConnectionFactory.setRequestedChannelMax(int)
    • setRequestedFrameMax Link icon

      public void setRequestedFrameMax(int requestedFrameMax)
      Parameters:
      requestedFrameMax - the requested max frames.
      See Also:
      • ConnectionFactory.setRequestedFrameMax(int)
    • setConnectionTimeout Link icon

      public void setConnectionTimeout(int connectionTimeout)
      Parameters:
      connectionTimeout - the connection timeout.
      See Also:
      • ConnectionFactory.setConnectionTimeout(int)
    • setRequestedHeartbeat Link icon

      public void setRequestedHeartbeat(int requestedHeartbeat)
      Parameters:
      requestedHeartbeat - the requested heartbeat.
      See Also:
      • ConnectionFactory.setRequestedHeartbeat(int)
    • setClientProperties Link icon

      public void setClientProperties(Map<String,Object> clientProperties)
      Add custom client properties.
      Parameters:
      clientProperties - the client properties.
      See Also:
      • ConnectionFactory.setClientProperties(java.util.Map)
    • setSaslConfig Link icon

      public void setSaslConfig(com.rabbitmq.client.SaslConfig saslConfig)
      Parameters:
      saslConfig - the sasl config.
      See Also:
      • ConnectionFactory.setSaslConfig(com.rabbitmq.client.SaslConfig)
    • setSocketFactory Link icon

      public void setSocketFactory(SocketFactory factory)
      Parameters:
      factory - the socket factory.
      See Also:
      • ConnectionFactory.setSocketFactory(javax.net.SocketFactory)
    • setSocketConfigurator Link icon

      public void setSocketConfigurator(com.rabbitmq.client.SocketConfigurator socketConfigurator)
      Parameters:
      socketConfigurator - the socket configurator.
      See Also:
      • ConnectionFactory.setSocketConfigurator(com.rabbitmq.client.SocketConfigurator)
    • setSharedExecutor Link icon

      public void setSharedExecutor(ExecutorService executor)
      Parameters:
      executor - the executor service
      See Also:
      • ConnectionFactory.setSharedExecutor(java.util.concurrent.ExecutorService)
    • setThreadFactory Link icon

      public void setThreadFactory(ThreadFactory threadFactory)
      Parameters:
      threadFactory - the thread factory.
      See Also:
      • ConnectionFactory.setThreadFactory(java.util.concurrent.ThreadFactory)
    • setExceptionHandler Link icon

      public void setExceptionHandler(com.rabbitmq.client.ExceptionHandler exceptionHandler)
      Parameters:
      exceptionHandler - the exception handler.
      See Also:
      • ConnectionFactory.setExceptionHandler(com.rabbitmq.client.ExceptionHandler)
    • setUseNio Link icon

      public void setUseNio(boolean useNio)
      Whether or not the factory should be configured to use Java NIO.
      Parameters:
      useNio - true to use Java NIO, false to use blocking IO
      See Also:
      • ConnectionFactory.useNio()
    • setNioParams Link icon

      public void setNioParams(com.rabbitmq.client.impl.nio.NioParams nioParams)
      Parameters:
      nioParams - the NIO parameters
      See Also:
      • ConnectionFactory.setNioParams(com.rabbitmq.client.impl.nio.NioParams)
    • setMetricsCollector Link icon

      public void setMetricsCollector(com.rabbitmq.client.MetricsCollector metricsCollector)
      Parameters:
      metricsCollector - the metrics collector instance
      See Also:
      • ConnectionFactory.setMetricsCollector(MetricsCollector)
    • setAutomaticRecoveryEnabled Link icon

      public void setAutomaticRecoveryEnabled(boolean automaticRecoveryEnabled)
      Set to true to enable amqp-client automatic recovery. Note: Spring AMQP implements its own connection recovery and this is generally not needed.
      Parameters:
      automaticRecoveryEnabled - true to enable.
      Since:
      1.7.1
    • setTopologyRecoveryEnabled Link icon

      public void setTopologyRecoveryEnabled(boolean topologyRecoveryEnabled)
      Set to true to enable amqp-client topology recovery. Note: if there is a Rabbit admin in the application context, Spring AMQP implements its own recovery and this is generally not needed.
      Parameters:
      topologyRecoveryEnabled - true to enable.
      Since:
      1.7.1
    • setChannelRpcTimeout Link icon

      public void setChannelRpcTimeout(int channelRpcTimeout)
      Parameters:
      channelRpcTimeout - continuation timeout for RPC calls in channels
      Since:
      2.0
      See Also:
      • ConnectionFactory.setChannelRpcTimeout(int)
    • setEnableHostnameVerification Link icon

      public void setEnableHostnameVerification(boolean enable)
      Enable server hostname verification for TLS connections.

      This enables hostname verification regardless of the IO mode used (blocking or non-blocking IO).

      This can be called typically after setting the SSLContext with one of the useSslProtocol methods. Requires amqp-client 5.4.0 or later.

      Parameters:
      enable - false to disable.
      Since:
      2.0.6
      See Also:
      • ConnectionFactory.enableHostnameVerification()
    • setMaxInboundMessageBodySize Link icon

      public void setMaxInboundMessageBodySize(int maxInboundMessageBodySize)
      Set the maximum body size of inbound (received) messages in bytes.
      Parameters:
      maxInboundMessageBodySize - the maximum size.
      Since:
      2.4.15
      See Also:
      • ConnectionFactory.setMaxInboundMessageBodySize(int)
    • getKeyStoreAlgorithm Link icon

      protected String getKeyStoreAlgorithm()
    • setKeyStoreAlgorithm Link icon

      public void setKeyStoreAlgorithm(String keyStoreAlgorithm)
      Set the algorithm used when creating the key store, default SunX509.
      Parameters:
      keyStoreAlgorithm - the algorithm.
      Since:
      2.1.6
    • getTrustStoreAlgorithm Link icon

      protected String getTrustStoreAlgorithm()
    • setTrustStoreAlgorithm Link icon

      public void setTrustStoreAlgorithm(String trustStoreAlgorithm)
      Set the algorithm used when creating the trust store, default SunX509.
      Parameters:
      trustStoreAlgorithm - the algorithm.
      Since:
      2.1.6
    • getResourceLoader Link icon

      protected ResourceLoader getResourceLoader()
      Get the resource loader; used to resolve the key store and trust store Resources to input streams.
      Returns:
      the resource loader.
      Since:
      2.3
    • setResourceLoader Link icon

      public void setResourceLoader(ResourceLoader resourceLoader)
      Set the resource loader; used to resolve the key store and trust store Resources to input streams.
      Parameters:
      resourceLoader - the resource loader.
      Since:
      2.3
    • getRabbitConnectionFactory Link icon

      public com.rabbitmq.client.ConnectionFactory getRabbitConnectionFactory()
      Access the connection factory to set any other properties not supported by this factory bean.
      Returns:
      the connection factory.
      Since:
      1.7.14
    • afterPropertiesSet Link icon

      public void afterPropertiesSet()
      Specified by:
      afterPropertiesSet in interface InitializingBean
      Overrides:
      afterPropertiesSet in class AbstractFactoryBean<com.rabbitmq.client.ConnectionFactory>
    • getObjectType Link icon

      public Class<?> getObjectType()
      Specified by:
      getObjectType in interface FactoryBean<com.rabbitmq.client.ConnectionFactory>
      Specified by:
      getObjectType in class AbstractFactoryBean<com.rabbitmq.client.ConnectionFactory>
    • createInstance Link icon

      protected com.rabbitmq.client.ConnectionFactory createInstance()
      Specified by:
      createInstance in class AbstractFactoryBean<com.rabbitmq.client.ConnectionFactory>
    • setUpSSL Link icon

      protected void setUpSSL()
      Override this method to take complete control over the SSL setup.
      Since:
      1.4.4
    • configureKeyManagers Link icon

    • configureTrustManagers Link icon

    • createSSLContext Link icon

      protected SSLContext createSSLContext() throws NoSuchAlgorithmException
      Override this method to create and/or configure the SSLContext used by the ConnectionFactory.
      Returns:
      The SSLContext.
      Throws:
      NoSuchAlgorithmException - if the algorithm is not available.
      Since:
      1.4.4