mirror of
https://github.com/spring-projects/spring-boot.git
synced 2026-09-28 21:19:02 +00:00
Merge pull request #51666 from ohchanKyu
Closes gh-51666 * gh-51666: Polish "Use TLS port for Docker Compose RabbitMQ connection when SSL is configured" Use TLS port for Docker Compose RabbitMQ connection when SSL is configured
This commit is contained in:
+25
-5
@@ -16,6 +16,9 @@
|
||||
|
||||
package org.springframework.boot.amqp.docker.compose;
|
||||
|
||||
import com.rabbitmq.client.Connection;
|
||||
import com.rabbitmq.client.ConnectionFactory;
|
||||
|
||||
import org.springframework.boot.amqp.autoconfigure.RabbitConnectionDetails;
|
||||
import org.springframework.boot.amqp.autoconfigure.RabbitConnectionDetails.Address;
|
||||
import org.springframework.boot.docker.compose.service.connection.test.DockerComposeTest;
|
||||
@@ -35,20 +38,19 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
class RabbitDockerComposeConnectionDetailsFactoryIntegrationTests {
|
||||
|
||||
@DockerComposeTest(composeFile = "rabbit-compose.yaml", image = TestImage.RABBITMQ)
|
||||
void runCreatesConnectionDetails(RabbitConnectionDetails connectionDetails) {
|
||||
void runCreatesConnectionDetails(RabbitConnectionDetails connectionDetails) throws Exception {
|
||||
assertConnectionDetails(connectionDetails);
|
||||
assertThat(connectionDetails.getSslBundle()).isNull();
|
||||
}
|
||||
|
||||
@DockerComposeTest(composeFile = "rabbit-ssl-compose.yaml", image = TestImage.RABBITMQ,
|
||||
additionalResources = { "ca.crt", "server.crt", "server.key", "client.crt", "client.key", "rabbitmq.conf" })
|
||||
void runWithSslCreatesConnectionDetails(RabbitConnectionDetails connectionDetails) {
|
||||
void runWithSslCreatesConnectionDetails(RabbitConnectionDetails connectionDetails) throws Exception {
|
||||
assertConnectionDetails(connectionDetails);
|
||||
SslBundle sslBundle = connectionDetails.getSslBundle();
|
||||
assertThat(sslBundle).isNotNull();
|
||||
assertThat(connectionDetails.getSslBundle()).isNotNull();
|
||||
}
|
||||
|
||||
private void assertConnectionDetails(RabbitConnectionDetails connectionDetails) {
|
||||
private void assertConnectionDetails(RabbitConnectionDetails connectionDetails) throws Exception {
|
||||
assertThat(connectionDetails.getUsername()).isEqualTo("myuser");
|
||||
assertThat(connectionDetails.getPassword()).isEqualTo("secret");
|
||||
assertThat(connectionDetails.getVirtualHost()).isEqualTo("/");
|
||||
@@ -56,6 +58,24 @@ class RabbitDockerComposeConnectionDetailsFactoryIntegrationTests {
|
||||
Address address = connectionDetails.getFirstAddress();
|
||||
assertThat(address.host()).isNotNull();
|
||||
assertThat(address.port()).isGreaterThan(0);
|
||||
assertThatConnectionCanBeMade(connectionDetails);
|
||||
}
|
||||
|
||||
private void assertThatConnectionCanBeMade(RabbitConnectionDetails connectionDetails) throws Exception {
|
||||
ConnectionFactory connectionFactory = new ConnectionFactory();
|
||||
Address address = connectionDetails.getFirstAddress();
|
||||
connectionFactory.setHost(address.host());
|
||||
connectionFactory.setPort(address.port());
|
||||
connectionFactory.setUsername(connectionDetails.getUsername());
|
||||
connectionFactory.setPassword(connectionDetails.getPassword());
|
||||
connectionFactory.setVirtualHost(connectionDetails.getVirtualHost());
|
||||
SslBundle sslBundle = connectionDetails.getSslBundle();
|
||||
if (sslBundle != null) {
|
||||
connectionFactory.useSslProtocol(sslBundle.createSslContext());
|
||||
}
|
||||
try (Connection connection = connectionFactory.newConnection()) {
|
||||
assertThat(connection.isOpen()).isTrue();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+4
-1
@@ -40,6 +40,8 @@ class RabbitDockerComposeConnectionDetailsFactory
|
||||
|
||||
private static final int RABBITMQ_PORT = 5672;
|
||||
|
||||
private static final int RABBITMQ_TLS_PORT = 5671;
|
||||
|
||||
protected RabbitDockerComposeConnectionDetailsFactory() {
|
||||
super("rabbitmq");
|
||||
}
|
||||
@@ -66,7 +68,8 @@ class RabbitDockerComposeConnectionDetailsFactory
|
||||
super(service);
|
||||
this.environment = new RabbitEnvironment(service.env());
|
||||
this.sslBundle = getSslBundle(service);
|
||||
this.addresses = List.of(new Address(service.host(), service.ports().get(RABBITMQ_PORT)));
|
||||
int containerPort = (this.sslBundle != null) ? RABBITMQ_TLS_PORT : RABBITMQ_PORT;
|
||||
this.addresses = List.of(new Address(service.host(), service.ports().get(containerPort)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user