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 intializes key and trust manager factories, using
algorithm SunX509 by default. These are then used to initialize an
SSLContext using the sslAlgorithm (default
TLSv1.1).
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
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final com.rabbitmq.client.ConnectionFactoryFields inherited from class org.springframework.beans.factory.config.AbstractFactoryBean
loggerFields inherited from interface org.springframework.beans.factory.FactoryBean
OBJECT_TYPE_ATTRIBUTE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidprotected KeyManager[]protected TrustManager[]protected com.rabbitmq.client.ConnectionFactoryprotected SSLContextOverride this method to create and/or configure theSSLContextused by theConnectionFactory.protected Stringprotected Stringprotected Stringprotected Resourceprotected StringGet the key store type - this defaults to PKCS12 if not overridden bysetSslPropertiesLocation(Resource)orsetKeyStoreType(java.lang.String).Class<?>com.rabbitmq.client.ConnectionFactoryAccess the connection factory to set any other properties not supported by this factory bean.protected ResourceLoaderGet the resource loader; used to resolve the key store and trust storeResources to input streams.protected SecureRandomprotected Stringprotected Resourceprotected Stringprotected Stringprotected Stringprotected Resourceprotected StringGet the trust store type - this defaults to JKS if not overridden bysetSslPropertiesLocation(Resource)orsetTrustStoreType(java.lang.String).booleanWhether or not Server Side certificate has to be validated or not.protected booleanisUseSSL()voidsetAutomaticRecoveryEnabled(boolean automaticRecoveryEnabled) Set to true to enable amqp-client automatic recovery.voidsetChannelRpcTimeout(int channelRpcTimeout) voidsetClientProperties(Map<String, Object> clientProperties) Add custom client properties.voidsetConnectionTimeout(int connectionTimeout) voidsetCredentialsProvider(com.rabbitmq.client.impl.CredentialsProvider provider) Set a credentials provider (e.g.voidsetCredentialsRefreshService(com.rabbitmq.client.impl.CredentialsRefreshService service) Set a refresh service.voidsetEnableHostnameVerification(boolean enable) Enable server hostname verification for TLS connections.voidsetExceptionHandler(com.rabbitmq.client.ExceptionHandler exceptionHandler) voidvoidsetKeyStore(String keyStore) Set the key store resource (e.g.voidsetKeyStoreAlgorithm(String keyStoreAlgorithm) Set the algorithm used when creating the key store, defaultSunX509.voidsetKeyStorePassphrase(String keyStorePassphrase) Set the key store pass phrase - overrides the property insetSslPropertiesLocation(Resource).voidsetKeyStoreResource(Resource keyStoreResource) Set a Resource pointing to the key store.voidsetKeyStoreType(String keyStoreType) Set the key store type - overrides the property insetSslPropertiesLocation(Resource).voidsetMetricsCollector(com.rabbitmq.client.MetricsCollector metricsCollector) voidsetNioParams(com.rabbitmq.client.impl.nio.NioParams nioParams) voidsetPassword(String password) voidsetPort(int port) voidsetRequestedChannelMax(int requestedChannelMax) voidsetRequestedFrameMax(int requestedFrameMax) voidsetRequestedHeartbeat(int requestedHeartbeat) voidsetResourceLoader(ResourceLoader resourceLoader) Set the resource loader; used to resolve the key store and trust storeResources to input streams.voidsetSaslConfig(com.rabbitmq.client.SaslConfig saslConfig) voidsetSecureRandom(SecureRandom secureRandom) Set the secure random to use when initializing theSSLContext.voidsetSharedExecutor(ExecutorService executor) voidsetSkipServerCertificateValidation(boolean skipServerCertificateValidation) Whether or not Server Side certificate has to be validated or not.voidsetSocketConfigurator(com.rabbitmq.client.SocketConfigurator socketConfigurator) voidsetSocketFactory(SocketFactory factory) voidsetSslAlgorithm(String sslAlgorithm) Set the algorithm to use; default TLSv1.1.voidsetSslPropertiesLocation(Resource sslPropertiesLocation) WhensetUseSSL(boolean)is true, the SSL properties to use (optional).voidsetThreadFactory(ThreadFactory threadFactory) voidsetTopologyRecoveryEnabled(boolean topologyRecoveryEnabled) Set to true to enable amqp-client topology recovery.voidsetTrustStore(String trustStore) Set the key store resource (e.g.voidsetTrustStoreAlgorithm(String trustStoreAlgorithm) Set the algorithm used when creating the trust store, defaultSunX509.voidsetTrustStorePassphrase(String trustStorePassphrase) Set the trust store pass phrase - overrides the property insetSslPropertiesLocation(Resource).voidsetTrustStoreResource(Resource trustStoreResource) Set a Resource pointing to the trust store.voidsetTrustStoreType(String trustStoreType) Set the trust store type - overrides the property insetSslPropertiesLocation(Resource).protected voidsetUpSSL()Override this method to take complete control over the SSL setup.voidvoidvoidsetUseNio(boolean useNio) Whether or not the factory should be configured to use Java NIO.voidsetUsername(String username) voidsetUseSSL(boolean useSSL) Whether or not the factory should be configured to use SSL.voidsetVirtualHost(String virtualHost) Methods inherited from class org.springframework.beans.factory.config.AbstractFactoryBean
destroy, destroyInstance, getBeanFactory, getBeanTypeConverter, getEarlySingletonInterfaces, getObject, isSingleton, setBeanClassLoader, setBeanFactory, setSingleton
-
Field Details
-
connectionFactory
protected final com.rabbitmq.client.ConnectionFactory connectionFactory
-
-
Constructor Details
-
RabbitConnectionFactoryBean
public RabbitConnectionFactoryBean()
-
-
Method Details
-
isSkipServerCertificateValidation
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
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 totrueTrustEverythingTrustManagerwould be used.- Since:
- 1.6.6
- See Also:
-
TrustEverythingTrustManager
-
setUseSSL
public void setUseSSL(boolean useSSL) Whether or not the factory should be configured to use SSL.- Parameters:
useSSL- true to use SSL.
-
isUseSSL
protected boolean isUseSSL()- Returns:
- true to use ssl.
- Since:
- 1.4.4.
-
setSslAlgorithm
Set the algorithm to use; default TLSv1.1.- Parameters:
sslAlgorithm- the algorithm.
-
getSslAlgorithm
- Returns:
- the ssl algorithm.
- Since:
- 1.4.4
-
setSslPropertiesLocation
WhensetUseSSL(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
- Returns:
- the properties location.
- Since:
- 1.4.4
-
getKeyStore
- Returns:
- the key store resource.
- Since:
- 1.5
-
setKeyStore
Set the key store resource (e.g. file:/foo/keystore) - overrides the property insetSslPropertiesLocation(Resource). Ignored ifsetTrustStoreResource(Resource)is called with a resource.- Parameters:
keyStore- the keystore resource.- Since:
- 1.5
-
getKeyStoreResource
-
setKeyStoreResource
Set a Resource pointing to the key store.- Parameters:
keyStoreResource- the resource.- Since:
- 1.6.4
-
getTrustStore
- Returns:
- the trust store resource.
- Since:
- 1.5
-
setTrustStore
Set the key store resource (e.g. file:/foo/truststore) - overrides the property insetSslPropertiesLocation(Resource). Ignored ifsetTrustStoreResource(Resource)is called with a resource.- Parameters:
trustStore- the truststore resource.- Since:
- 1.5
-
getTrustStoreResource
-
setTrustStoreResource
Set a Resource pointing to the trust store.- Parameters:
trustStoreResource- the resource.- Since:
- 1.6.4
-
getKeyStorePassphrase
- Returns:
- the key store pass phrase.
- Since:
- 1.5
-
setKeyStorePassphrase
Set the key store pass phrase - overrides the property insetSslPropertiesLocation(Resource).- Parameters:
keyStorePassphrase- the key store pass phrase.- Since:
- 1.5
-
getTrustStorePassphrase
- Returns:
- the trust store pass phrase.
- Since:
- 1.5
-
setTrustStorePassphrase
Set the trust store pass phrase - overrides the property insetSslPropertiesLocation(Resource).- Parameters:
trustStorePassphrase- the trust store pass phrase.- Since:
- 1.5
-
getKeyStoreType
Get the key store type - this defaults to PKCS12 if not overridden bysetSslPropertiesLocation(Resource)orsetKeyStoreType(java.lang.String).- Returns:
- the key store type.
- Since:
- 1.6.2
-
setKeyStoreType
Set the key store type - overrides the property insetSslPropertiesLocation(Resource).- Parameters:
keyStoreType- the key store type.- Since:
- 1.6.2
- See Also:
-
getTrustStoreType
Get the trust store type - this defaults to JKS if not overridden bysetSslPropertiesLocation(Resource)orsetTrustStoreType(java.lang.String).- Returns:
- the trust store type.
- Since:
- 1.6.2
-
setTrustStoreType
Set the trust store type - overrides the property insetSslPropertiesLocation(Resource).- Parameters:
trustStoreType- the trust store type.- Since:
- 1.6.2
- See Also:
-
getSecureRandom
-
setSecureRandom
Set the secure random to use when initializing theSSLContext. Defaults to null, in which case the default implementation is used.- Parameters:
secureRandom- the secure random.- Since:
- 1.6.4
- See Also:
-
setHost
- Parameters:
host- the host.- See Also:
-
ConnectionFactory.setHost(java.lang.String)
-
setPort
public void setPort(int port) - Parameters:
port- the port.- See Also:
-
ConnectionFactory.setPort(int)
-
setUsername
- Parameters:
username- the user name.- See Also:
-
ConnectionFactory.setUsername(java.lang.String)
-
setPassword
- Parameters:
password- the password.- See Also:
-
ConnectionFactory.setPassword(java.lang.String)
-
setCredentialsProvider
public void setCredentialsProvider(com.rabbitmq.client.impl.CredentialsProvider provider) Set a credentials provider (e.g. OAUTH2).- Parameters:
provider- the provider.- Since:
- 2.3
-
setCredentialsRefreshService
public void setCredentialsRefreshService(com.rabbitmq.client.impl.CredentialsRefreshService service) Set a refresh service.- Parameters:
service- the service.- Since:
- 2.3
-
setVirtualHost
- Parameters:
virtualHost- the virtual host.- See Also:
-
ConnectionFactory.setVirtualHost(java.lang.String)
-
setUri
- Parameters:
uri- the uri.- See Also:
-
ConnectionFactory.setUri(java.net.URI)
-
setUri
- Parameters:
uriString- the uri.- See Also:
-
ConnectionFactory.setUri(java.lang.String)
-
setRequestedChannelMax
public void setRequestedChannelMax(int requestedChannelMax) - Parameters:
requestedChannelMax- the max requested channels.- See Also:
-
ConnectionFactory.setRequestedChannelMax(int)
-
setRequestedFrameMax
public void setRequestedFrameMax(int requestedFrameMax) - Parameters:
requestedFrameMax- the requested max frames.- See Also:
-
ConnectionFactory.setRequestedFrameMax(int)
-
setConnectionTimeout
public void setConnectionTimeout(int connectionTimeout) - Parameters:
connectionTimeout- the connection timeout.- See Also:
-
ConnectionFactory.setConnectionTimeout(int)
-
setRequestedHeartbeat
public void setRequestedHeartbeat(int requestedHeartbeat) - Parameters:
requestedHeartbeat- the requested heartbeat.- See Also:
-
ConnectionFactory.setRequestedHeartbeat(int)
-
setClientProperties
Add custom client properties.- Parameters:
clientProperties- the client properties.- See Also:
-
ConnectionFactory.setClientProperties(java.util.Map)
-
setSaslConfig
public void setSaslConfig(com.rabbitmq.client.SaslConfig saslConfig) - Parameters:
saslConfig- the sasl config.- See Also:
-
ConnectionFactory.setSaslConfig(com.rabbitmq.client.SaslConfig)
-
setSocketFactory
- Parameters:
factory- the socket factory.- See Also:
-
ConnectionFactory.setSocketFactory(javax.net.SocketFactory)
-
setSocketConfigurator
public void setSocketConfigurator(com.rabbitmq.client.SocketConfigurator socketConfigurator) - Parameters:
socketConfigurator- the socket configurator.- See Also:
-
ConnectionFactory.setSocketConfigurator(com.rabbitmq.client.SocketConfigurator)
-
setThreadFactory
- Parameters:
threadFactory- the thread factory.- See Also:
-
ConnectionFactory.setThreadFactory(java.util.concurrent.ThreadFactory)
-
setExceptionHandler
public void setExceptionHandler(com.rabbitmq.client.ExceptionHandler exceptionHandler) - Parameters:
exceptionHandler- the exception handler.- See Also:
-
ConnectionFactory.setExceptionHandler(com.rabbitmq.client.ExceptionHandler)
-
setUseNio
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
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
public void setMetricsCollector(com.rabbitmq.client.MetricsCollector metricsCollector) - Parameters:
metricsCollector- the metrics collector instance- See Also:
-
ConnectionFactory.setMetricsCollector(MetricsCollector)
-
setAutomaticRecoveryEnabled
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
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
public void setChannelRpcTimeout(int channelRpcTimeout) - Parameters:
channelRpcTimeout- continuation timeout for RPC calls in channels- Since:
- 2.0
- See Also:
-
ConnectionFactory.setChannelRpcTimeout(int)
-
setEnableHostnameVerification
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
SSLContextwith one of theuseSslProtocolmethods. Requires amqp-client 5.4.0 or later.- Parameters:
enable- false to disable.- Since:
- 2.0.6
- See Also:
-
ConnectionFactory.enableHostnameVerification()
-
getKeyStoreAlgorithm
-
setKeyStoreAlgorithm
Set the algorithm used when creating the key store, defaultSunX509.- Parameters:
keyStoreAlgorithm- the algorithm.- Since:
- 2.1.6
-
getTrustStoreAlgorithm
-
setTrustStoreAlgorithm
Set the algorithm used when creating the trust store, defaultSunX509.- Parameters:
trustStoreAlgorithm- the algorithm.- Since:
- 2.1.6
-
getResourceLoader
Get the resource loader; used to resolve the key store and trust storeResources to input streams.- Returns:
- the resource loader.
- Since:
- 2.3
-
setResourceLoader
Set the resource loader; used to resolve the key store and trust storeResources to input streams.- Parameters:
resourceLoader- the resource loader.- Since:
- 2.3
-
getRabbitConnectionFactory
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
public void afterPropertiesSet()- Specified by:
afterPropertiesSetin interfaceInitializingBean- Overrides:
afterPropertiesSetin classAbstractFactoryBean<com.rabbitmq.client.ConnectionFactory>
-
getObjectType
- Specified by:
getObjectTypein interfaceFactoryBean<com.rabbitmq.client.ConnectionFactory>- Specified by:
getObjectTypein classAbstractFactoryBean<com.rabbitmq.client.ConnectionFactory>
-
createInstance
protected com.rabbitmq.client.ConnectionFactory createInstance()- Specified by:
createInstancein classAbstractFactoryBean<com.rabbitmq.client.ConnectionFactory>
-
setUpSSL
protected void setUpSSL()Override this method to take complete control over the SSL setup.- Since:
- 1.4.4
-
configureKeyManagers
@Nullable protected KeyManager[] configureKeyManagers() throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException, UnrecoverableKeyException -
configureTrustManagers
@Nullable protected TrustManager[] configureTrustManagers() throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException -
createSSLContext
Override this method to create and/or configure theSSLContextused by theConnectionFactory.- Returns:
- The
SSLContext. - Throws:
NoSuchAlgorithmException- if the algorithm is not available.- Since:
- 1.4.4
-