Skip to content

Commit e70671b

Browse files
shakuzenadriancole
authored andcommitted
Option to use SSL with RabbitMQ (openzipkin#1837)
Allows users to set a flag to use SSL when connecting to the RabbitMQ server via AMQPS. See openzipkingh-1827
1 parent ae70b6b commit e70671b

File tree

5 files changed

+31
-7
lines changed

5 files changed

+31
-7
lines changed

zipkin-autoconfigure/collector-rabbitmq/src/main/java/zipkin/autoconfigure/collector/rabbitmq/ZipkinRabbitMQCollectorAutoConfiguration.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
*/
1414
package zipkin.autoconfigure.collector.rabbitmq;
1515

16+
import java.security.KeyManagementException;
17+
import java.security.NoSuchAlgorithmException;
1618
import org.springframework.boot.context.properties.EnableConfigurationProperties;
1719
import org.springframework.context.annotation.Bean;
1820
import org.springframework.context.annotation.Condition;
@@ -35,7 +37,8 @@ public class ZipkinRabbitMQCollectorAutoConfiguration {
3537

3638
@Bean(initMethod = "start") RabbitMQCollector rabbitMq(
3739
ZipkinRabbitMQCollectorProperties properties,
38-
CollectorSampler sampler, CollectorMetrics metrics, StorageComponent storage) {
40+
CollectorSampler sampler, CollectorMetrics metrics, StorageComponent storage)
41+
throws NoSuchAlgorithmException, KeyManagementException {
3942
return properties.toBuilder().sampler(sampler).metrics(metrics).storage(storage).build();
4043
}
4144

zipkin-autoconfigure/collector-rabbitmq/src/main/java/zipkin/autoconfigure/collector/rabbitmq/ZipkinRabbitMQCollectorProperties.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
package zipkin.autoconfigure.collector.rabbitmq;
1515

1616
import com.rabbitmq.client.ConnectionFactory;
17+
import java.security.KeyManagementException;
18+
import java.security.NoSuchAlgorithmException;
1719
import java.util.List;
1820
import org.springframework.boot.context.properties.ConfigurationProperties;
1921
import zipkin.collector.rabbitmq.RabbitMQCollector;
@@ -38,6 +40,8 @@ public class ZipkinRabbitMQCollectorProperties {
3840
private String username;
3941
/** RabbitMQ virtual host */
4042
private String virtualHost;
43+
/** Flag to use SSL */
44+
private Boolean useSsl;
4145

4246
public List<String> getAddresses() {
4347
return addresses;
@@ -95,7 +99,16 @@ public void setVirtualHost(String virtualHost) {
9599
this.virtualHost = virtualHost;
96100
}
97101

98-
public RabbitMQCollector.Builder toBuilder() {
102+
public Boolean getUseSsl() {
103+
return useSsl;
104+
}
105+
106+
public void setUseSsl(Boolean useSsl) {
107+
this.useSsl = useSsl;
108+
}
109+
110+
public RabbitMQCollector.Builder toBuilder()
111+
throws KeyManagementException, NoSuchAlgorithmException {
99112
final RabbitMQCollector.Builder result = RabbitMQCollector.builder();
100113
ConnectionFactory connectionFactory = new ConnectionFactory();
101114
if (addresses != null) result.addresses(addresses);
@@ -105,8 +118,8 @@ public RabbitMQCollector.Builder toBuilder() {
105118
if (queue != null) result.queue(queue);
106119
if (username != null) connectionFactory.setUsername(username);
107120
if (virtualHost != null) connectionFactory.setVirtualHost(virtualHost);
121+
if (useSsl != null && useSsl) connectionFactory.useSslProtocol();
108122
result.connectionFactory(connectionFactory);
109123
return result;
110124
}
111-
112125
}

zipkin-autoconfigure/collector-rabbitmq/src/test/java/zipkin/collector/rabbitmq/ZipkinRabbitMQCollectorPropertiesOverrideTest.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
*/
1414
package zipkin.collector.rabbitmq;
1515

16+
import java.security.KeyManagementException;
17+
import java.security.NoSuchAlgorithmException;
1618
import java.util.Arrays;
1719
import java.util.List;
1820
import java.util.function.Function;
@@ -70,7 +72,10 @@ public static Iterable<Object[]> data() {
7072
builder -> builder.connectionFactory.getUsername()),
7173
parameters("virtualHost", "/hello",
7274
ZipkinRabbitMQCollectorProperties::getVirtualHost,
73-
builder -> builder.connectionFactory.getVirtualHost())
75+
builder -> builder.connectionFactory.getVirtualHost()),
76+
parameters("useSsl", true,
77+
ZipkinRabbitMQCollectorProperties::getUseSsl,
78+
builder -> builder.connectionFactory.isSSL())
7479
);
7580
}
7681

@@ -98,7 +103,8 @@ public void canOverrideValueOf() {
98103
}
99104

100105
@Test
101-
public void propertyTransferredToCollectorBuilder() {
106+
public void propertyTransferredToCollectorBuilder()
107+
throws NoSuchAlgorithmException, KeyManagementException {
102108
addEnvironment(context, property + ":" + value);
103109

104110
context.register(

zipkin-collector/rabbitmq/README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,12 @@ Property | Environment Variable | Description
1212
--- | --- | ---
1313
`zipkin.collector.rabbitmq.addresses` | `RABBIT_ADDRESSES` | Comma-separated list of RabbitMQ addresses, ex. `localhost:5672,localhost:5673`
1414
`zipkin.collector.rabbitmq.concurrency` | `RABBIT_CONCURRENCY` | Number of concurrent consumers. Defaults to `1`
15-
`zipkin.collector.rabbitmq.connectionTimeout` | `RABBIT_CONNECTION_TIMEOUT` | Milliseconds to wait establishing a connection. Defaults to `60000` (1 minute)
15+
`zipkin.collector.rabbitmq.connection-timeout` | `RABBIT_CONNECTION_TIMEOUT` | Milliseconds to wait establishing a connection. Defaults to `60000` (1 minute)
1616
`zipkin.collector.rabbitmq.password` | `RABBIT_PASSWORD`| Password to use when connecting to RabbitMQ. Defaults to `guest`
1717
`zipkin.collector.rabbitmq.queue` | `RABBIT_QUEUE` | Queue from which to collect span messages. Defaults to `zipkin`
1818
`zipkin.collector.rabbitmq.username` | `RABBIT_USER` | Username to use when connecting to RabbitMQ. Defaults to `guest`
19-
`zipkin.collector.rabbitmq.virtualHost` | `RABBIT_VIRTUAL_HOST` | RabbitMQ virtual host to use. Defaults to `/`
19+
`zipkin.collector.rabbitmq.virtual-host` | `RABBIT_VIRTUAL_HOST` | RabbitMQ virtual host to use. Defaults to `/`
20+
`zipkin.collector.rabbitmq.use-ssl` | `RABBIT_USE_SSL` | Set to `true` to use SSL when connecting to RabbitMQ
2021

2122
### Caveats
2223

zipkin-server/src/main/resources/zipkin-server-shared.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ zipkin:
3737
queue: ${RABBIT_QUEUE:zipkin}
3838
username: ${RABBIT_USER:guest}
3939
virtual-host: ${RABBIT_VIRTUAL_HOST:/}
40+
useSsl: ${RABBIT_USE_SSL:false}
4041
query:
4142
enabled: ${QUERY_ENABLED:true}
4243
# 1 day in millis

0 commit comments

Comments
 (0)