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.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
-
Field Summary
Modifier and TypeFieldDescriptionprotected final com.rabbitmq.client.ConnectionFactory
Fields inherited from class org.springframework.beans.factory.config.AbstractFactoryBean
logger
Fields inherited from interface org.springframework.beans.factory.FactoryBean
OBJECT_TYPE_ATTRIBUTE
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
protected KeyManager[]
protected TrustManager[]
protected com.rabbitmq.client.ConnectionFactory
protected SSLContext
Override this method to create and/or configure theSSLContext
used by theConnectionFactory
.protected String
protected String
protected String
protected Resource
protected String
Get the key store type - this defaults to PKCS12 if not overridden bysetSslPropertiesLocation(Resource)
orsetKeyStoreType(java.lang.String)
.Class<?>
com.rabbitmq.client.ConnectionFactory
Access the connection factory to set any other properties not supported by this factory bean.protected ResourceLoader
Get the resource loader; used to resolve the key store and trust storeResource
s to input streams.protected SecureRandom
protected String
protected Resource
protected String
protected String
protected String
protected Resource
protected String
Get the trust store type - this defaults to JKS if not overridden bysetSslPropertiesLocation(Resource)
orsetTrustStoreType(java.lang.String)
.boolean
Whether or not Server Side certificate has to be validated or not.protected boolean
isUseSSL()
void
setAutomaticRecoveryEnabled
(boolean automaticRecoveryEnabled) Set to true to enable amqp-client automatic recovery.void
setChannelRpcTimeout
(int channelRpcTimeout) void
setClientProperties
(Map<String, Object> clientProperties) Add custom client properties.void
setConnectionTimeout
(int connectionTimeout) void
setCredentialsProvider
(com.rabbitmq.client.impl.CredentialsProvider provider) Set a credentials provider (e.g.void
setCredentialsRefreshService
(com.rabbitmq.client.impl.CredentialsRefreshService service) Set a refresh service.void
setEnableHostnameVerification
(boolean enable) Enable server hostname verification for TLS connections.void
setExceptionHandler
(com.rabbitmq.client.ExceptionHandler exceptionHandler) void
void
setKeyStore
(String keyStore) Set the key store resource (e.g.void
setKeyStoreAlgorithm
(String keyStoreAlgorithm) Set the algorithm used when creating the key store, defaultSunX509
.void
setKeyStorePassphrase
(String keyStorePassphrase) Set the key store pass phrase - overrides the property insetSslPropertiesLocation(Resource)
.void
setKeyStoreResource
(Resource keyStoreResource) Set a Resource pointing to the key store.void
setKeyStoreType
(String keyStoreType) Set the key store type - overrides the property insetSslPropertiesLocation(Resource)
.void
setMaxInboundMessageBodySize
(int maxInboundMessageBodySize) Set the maximum body size of inbound (received) messages in bytes.void
setMetricsCollector
(com.rabbitmq.client.MetricsCollector metricsCollector) void
setNioParams
(com.rabbitmq.client.impl.nio.NioParams nioParams) void
setPassword
(String password) void
setPort
(int port) void
setRequestedChannelMax
(int requestedChannelMax) void
setRequestedFrameMax
(int requestedFrameMax) void
setRequestedHeartbeat
(int requestedHeartbeat) void
setResourceLoader
(ResourceLoader resourceLoader) Set the resource loader; used to resolve the key store and trust storeResource
s to input streams.void
setSaslConfig
(com.rabbitmq.client.SaslConfig saslConfig) void
setSecureRandom
(SecureRandom secureRandom) Set the secure random to use when initializing theSSLContext
.void
setSharedExecutor
(ExecutorService executor) void
setSkipServerCertificateValidation
(boolean skipServerCertificateValidation) Whether or not Server Side certificate has to be validated or not.void
setSocketConfigurator
(com.rabbitmq.client.SocketConfigurator socketConfigurator) void
setSocketFactory
(SocketFactory factory) void
setSslAlgorithm
(String sslAlgorithm) Set the algorithm to use; default TLSv1.1.void
setSslPropertiesLocation
(Resource sslPropertiesLocation) WhensetUseSSL(boolean)
is true, the SSL properties to use (optional).void
setThreadFactory
(ThreadFactory threadFactory) void
setTopologyRecoveryEnabled
(boolean topologyRecoveryEnabled) Set to true to enable amqp-client topology recovery.void
setTrustStore
(String trustStore) Set the key store resource (e.g.void
setTrustStoreAlgorithm
(String trustStoreAlgorithm) Set the algorithm used when creating the trust store, defaultSunX509
.void
setTrustStorePassphrase
(String trustStorePassphrase) Set the trust store pass phrase - overrides the property insetSslPropertiesLocation(Resource)
.void
setTrustStoreResource
(Resource trustStoreResource) Set a Resource pointing to the trust store.void
setTrustStoreType
(String trustStoreType) Set the trust store type - overrides the property insetSslPropertiesLocation(Resource)
.protected void
setUpSSL()
Override this method to take complete control over the SSL setup.void
void
void
setUseNio
(boolean useNio) Whether or not the factory should be configured to use Java NIO.void
setUsername
(String username) void
setUseSSL
(boolean useSSL) Whether or not the factory should be configured to use SSL.void
setVirtualHost
(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 totrue
TrustEverythingTrustManager
would 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
SSLContext
with one of theuseSslProtocol
methods. Requires amqp-client 5.4.0 or later.- Parameters:
enable
- false to disable.- Since:
- 2.0.6
- See Also:
-
ConnectionFactory.enableHostnameVerification()
-
setMaxInboundMessageBodySize
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
-
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 storeResource
s to input streams.- Returns:
- the resource loader.
- Since:
- 2.3
-
setResourceLoader
Set the resource loader; used to resolve the key store and trust storeResource
s 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:
afterPropertiesSet
in interfaceInitializingBean
- Overrides:
afterPropertiesSet
in classAbstractFactoryBean<com.rabbitmq.client.ConnectionFactory>
-
getObjectType
- Specified by:
getObjectType
in interfaceFactoryBean<com.rabbitmq.client.ConnectionFactory>
- Specified by:
getObjectType
in classAbstractFactoryBean<com.rabbitmq.client.ConnectionFactory>
-
createInstance
protected com.rabbitmq.client.ConnectionFactory createInstance()- Specified by:
createInstance
in 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 theSSLContext
used by theConnectionFactory
.- Returns:
- The
SSLContext
. - Throws:
NoSuchAlgorithmException
- if the algorithm is not available.- Since:
- 1.4.4
-