spring引导未连接到AWS中的RabbitMQ
我正在尝试将我的Spring Boot应用程序连接到RabbitMQ,RabbitMQ作为AWS服务托管 我 我还包括java异常、spring boot和AWS的配置spring引导未连接到AWS中的RabbitMQ,spring,amazon-web-services,spring-boot,spring-rabbit,amazon-mq,Spring,Amazon Web Services,Spring Boot,Spring Rabbit,Amazon Mq,我正在尝试将我的Spring Boot应用程序连接到RabbitMQ,RabbitMQ作为AWS服务托管 我 我还包括java异常、spring boot和AWS的配置 2021-05-15 09:31:50.651[0;39m [32m INFO[0;39m [35m12988[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.s.j.e.a.AnnotationMBeanExporter [0;39m [2m:[0;39m B
2021-05-15 09:31:50.651[0;39m [32m INFO[0;39m [35m12988[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.s.j.e.a.AnnotationMBeanExporter [0;39m [2m:[0;39m Bean with name 'rabbitConnectionFactory' has been autodetected for JMX exposure
[2m2021-05-15 09:31:50.655[0;39m [32m INFO[0;39m [35m12988[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.s.j.e.a.AnnotationMBeanExporter [0;39m [2m:[0;39m Located managed bean 'rabbitConnectionFactory': registering with JMX server as MBean [org.springframework.amqp.rabbit.connection:name=rabbitConnectionFactory,type=CachingConnectionFactory]
[2m2021-05-15 09:31:50.678[0;39m [32m INFO[0;39m [35m12988[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.s.c.support.DefaultLifecycleProcessor [0;39m [2m:[0;39m Starting beans in phase 0
[2m2021-05-15 09:31:50.678[0;39m [32m INFO[0;39m [35m12988[0;39m [2m---[0;39m [2m[ main][0;39m [36mo.s.c.support.DefaultLifecycleProcessor [0;39m [2m:[0;39m Starting beans in phase 2147483647
[2m2021-05-15 09:31:50.680[0;39m [32m INFO[0;39m [35m12988[0;39m [2m---[0;39m [2m[ main][0;39m [36md.s.w.p.DocumentationPluginsBootstrapper[0;39m [2m:[0;39m Context refreshed
[2m2021-05-15 09:31:50.715[0;39m [32m INFO[0;39m [35m12988[0;39m [2m---[0;39m [2m[ main][0;39m [36md.s.w.p.DocumentationPluginsBootstrapper[0;39m [2m:[0;39m Found 1 custom documentation plugin(s)
[2m2021-05-15 09:31:50.794[0;39m [32m INFO[0;39m [35m12988[0;39m [2m---[0;39m [2m[ main][0;39m [36ms.d.s.w.s.ApiListingReferenceScanner [0;39m [2m:[0;39m Scanning for api listing references
[2m2021-05-15 09:31:51.241[0;39m [32m INFO[0;39m [35m12988[0;39m [2m---[0;39m [2m[cTaskExecutor-1][0;39m [36mo.s.a.r.c.CachingConnectionFactory [0;39m [2m:[0;39m Attempting to connect to: [b-********-9c**-4b44-97c4-a3526fa7d4ee.mq.**-****east-1.amazonaws.com:5672]
[2m2021-05-15 09:32:12.283[0;39m [31mERROR[0;39m [35m12988[0;39m [2m---[0;39m [2m[cTaskExecutor-1][0;39m [36mo.s.a.r.l.SimpleMessageListenerContainer[0;39m [2m:[0;39m Failed to check/redeclare auto-delete queue(s).
org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection timed out: connect
at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:62) ~[spring-rabbit-2.0.3.RELEASE.jar:2.0.3.RELEASE]
at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:476) ~[spring-rabbit-2.0.3.RELEASE.jar:2.0.3.RELEASE]
at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:614) ~[spring-rabbit-2.0.3.RELEASE.jar:2.0.3.RELEASE]
at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.createConnection(ConnectionFactoryUtils.java:240) ~[spring-rabbit-2.0.3.RELEASE.jar:2.0.3.RELEASE]
at org.springframework.amqp.rabbit.core.RabbitTemplate.doExecute(RabbitTemplate.java:1797) ~[spring-rabbit-2.0.3.RELEASE.jar:2.0.3.RELEASE]
at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:1771) ~[spring-rabbit-2.0.3.RELEASE.jar:2.0.3.RELEASE]
at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:1752) ~[spring-rabbit-2.0.3.RELEASE.jar:2.0.3.RELEASE]
at org.springframework.amqp.rabbit.core.RabbitAdmin.getQueueProperties(RabbitAdmin.java:338) ~[spring-rabbit-2.0.3.RELEASE.jar:2.0.3.RELEASE]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.redeclareElementsIfNecessary(AbstractMessageListenerContainer.java:1604) ~[spring-rabbit-2.0.3.RELEASE.jar:2.0.3.RELEASE]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:963) [spring-rabbit-2.0.3.RELEASE.jar:2.0.3.RELEASE]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_261]
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_261]
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:81) ~[na:1.8.0_261]
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476) ~[na:1.8.0_261]
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218) ~[na:1.8.0_261]
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200) ~[na:1.8.0_261]
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:162) ~[na:1.8.0_261]
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394) ~[na:1.8.0_261]
at java.net.Socket.connect(Socket.java:606) ~[na:1.8.0_261]
at com.rabbitmq.client.impl.SocketFrameHandlerFactory.create(SocketFrameHandlerFactory.java:60) ~[amqp-client-5.1.2.jar:5.1.2]
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:955) ~[amqp-client-5.1.2.jar:5.1.2]
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:907) ~[amqp-client-5.1.2.jar:5.1.2]
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:847) ~[amqp-client-5.1.2.jar:5.1.2]
at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:449) ~[spring-rabbit-2.0.3.RELEASE.jar:2.0.3.RELEASE]
... 9 common frames omitted
下面提到的是application.yml和pom.xml文件的配置
# RabbitMQ configuration
spring.rabbitmq.host=https://b-********-9c**-4b44-97c4-a3526fa7d4ee.mq.**-****east-1.amazonaws.com
#spring.rabbitmq.host=amqps://b-********-9c**-4b44-97c4-a3526fa7d4ee.mq.**-****east-1.amazonaws.com
#spring.rabbitmq.host=b-********-9c**-4b44-97c4-a3526fa7d4ee.mq.**-****east-1.amazonaws.com
spring.rabbitmq.port=5672
spring.rabbitmq.username=<username>
spring.rabbitmq.password=<password>
#RabbitMQ配置
spring.rabbitmq.host=https://b-********-9c**-4b44-97c4-a3526fa7d4ee.mq.*-**east-1.amazonaws.com
#spring.rabbitmq.host=amqps://b-********-9c**-4b44-97c4-a3526fa7d4ee.mq.*-**east-1.amazonaws.com
#spring.rabbitmq.host=b-*********-9c**-4b44-97c4-a3526fa7d4ee.mq.*-*****east-1.amazonaws.com
spring.rabbitmq.port=5672
spring.rabbitmq.username=
spring.rabbitmq.password=
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>2.4.2</version>
</dependency>
org.springframework.boot
谢谢你的帮助
#spring.rabbitmq.host=amqps://b--9c-4b44-97c4-a3526fa7d4ee.mq.-
从上面注释的主机属性中得到提示,您似乎启用了SSL
您可以明确告诉Spring将SSL与Spring.rabbitmq.SSL.enabled
属性一起使用。这就是整个属性集的外观
spring.rabbitmq.ssl.enabled=true
spring.rabbitmq.host=b-XXXX-27f68f8379d3.mq.aws-region.amazonaws.com
spring.rabbitmq.port=5671
spring.rabbitmq.username=<YourUserName>
spring.rabbitmq.password=<YourPassword>
我必须将ssl属性设置为true才能连接到AWS Rabbitmq,但是通过application.yml设置属性“spring.Rabbitmq.ssl.enabled=true”
在我的情况下不起作用,我必须在配置类中创建一个bean来设置它,下面是对我有效的代码
@Bean
public CachingConnectionFactory rabbitConnectionFactory() throws Exception
{
ConnectionFactory factory = new ConnectionFactory();
factory.setHost(host);
factory.setUsername(username);
factory.setPassword(password);
factory.setPort(5671);
**factory.useSslProtocol();**
CachingConnectionFactory connectionFactory = new CachingConnectionFactory(factory);
return connectionFactory;
}
尝试启用“spring.rabbitmq.ssl.enabled=true”,但获得以下异常“org.springframework.amqp.AmqpIOException:javax.net.SSLHandshakeException:收到致命警报:org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:71)上的协议版本~[spring-rabbit-2.0.3.RELEASE.jar:2.0.3.RELEASE]”新错误更好。您能否提供有关运行时的更多详细信息,如Java版本和发行版,从AWS内部或外部运行。您如何运行它、Docker或Java进程。Java进程的任何命令行参数。RabbitMQ单实例部署或群集模式。只需检查AWS支持的托管RabbitMQ<代码>协议:TLSv1.2
。确保您的Java客户端也支持TLSv1.2。Java版本:8,Rabbit MQ是一个aws服务,我的Java应用程序目前作为一个独立的spring应用程序在本地运行,RabbitMQ是一个单实例部署,Rabbit MQ没有公开,并且启用了VPC连接,我猜它可能是一个issue从我的本地m/c进行端口访问(虽然不确定),我还启用了安全组中的5672和5671入站端口,不确定我还缺少什么。如果您需要从本地连接,服务应该是公共的(不限于基于VPC的访问)或者你需要使用客户端VPN。如果你正在尝试PoC或学习,你可以考虑使用一个公共的/基于Internet的,或者在正确的VPC上部署AWS上的代码并检查连接。
@Bean
public CachingConnectionFactory rabbitConnectionFactory() throws Exception
{
ConnectionFactory factory = new ConnectionFactory();
factory.setHost(host);
factory.setUsername(username);
factory.setPassword(password);
factory.setPort(5671);
**factory.useSslProtocol();**
CachingConnectionFactory connectionFactory = new CachingConnectionFactory(factory);
return connectionFactory;
}