Skip to content

Commit 270f569

Browse files
committed
Generate compose file for rabbitmq streams
Signed-off-by: Eddú Meléndez <eddu.melendez@gmail.com>
1 parent a3700d3 commit 270f569

3 files changed

Lines changed: 48 additions & 9 deletions

File tree

start-site/src/main/java/io/spring/start/site/extension/dependency/springamqp/SpringAmqpProjectGenerationConfiguration.java

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,14 @@
1616

1717
package io.spring.start.site.extension.dependency.springamqp;
1818

19+
import java.util.function.Consumer;
20+
1921
import io.spring.initializr.generator.buildsystem.Build;
2022
import io.spring.initializr.generator.condition.ConditionalOnPlatformVersion;
2123
import io.spring.initializr.generator.condition.ConditionalOnRequestedDependency;
24+
import io.spring.initializr.generator.container.docker.compose.ComposeConfig;
25+
import io.spring.initializr.generator.container.docker.compose.ComposeService;
26+
import io.spring.initializr.generator.container.docker.compose.ComposeServiceConfig;
2227
import io.spring.initializr.generator.project.ProjectGenerationConfiguration;
2328
import io.spring.start.site.container.ComposeFileCustomizer;
2429
import io.spring.start.site.container.DockerServiceResolver;
@@ -68,18 +73,36 @@ ServiceConnectionsCustomizer rabbitServiceConnectionsCustomizer(Build build,
6873
@ConditionalOnRequestedDependency("docker-compose")
6974
ComposeFileCustomizer rabbitComposeFileCustomizer(Build build, DockerServiceResolver serviceResolver) {
7075
return (composeFile) -> {
71-
if (isAmqpEnabled(build)) {
72-
serviceResolver.doWith("rabbit", (service) -> composeFile.services()
73-
.add("rabbitmq",
74-
service.andThen((builder) -> builder.environment("RABBITMQ_DEFAULT_USER", "myuser")
75-
.environment("RABBITMQ_DEFAULT_PASS", "secret")
76-
.ports(5672))));
77-
}
76+
serviceResolver.doWith("rabbit", (service) -> {
77+
if (isAmqpEnabled(build)) {
78+
Consumer<ComposeService.Builder> composeService = (builder) -> builder
79+
.environment("RABBITMQ_DEFAULT_USER", "myuser")
80+
.environment("RABBITMQ_DEFAULT_PASS", "secret")
81+
.ports(5672);
82+
if (isAmqpStreamsEnabled(build)) {
83+
composeFile.configs()
84+
.add("plugins", ComposeConfig.Builder.forContent("[rabbitmq_stream].").build());
85+
composeFile.services()
86+
.add("rabbitmq",
87+
service.andThen(composeService)
88+
.andThen((builder) -> builder.ports(5552)
89+
.config(ComposeServiceConfig.ofLong("plugins",
90+
"/etc/rabbitmq/enabled_plugins"))));
91+
}
92+
else {
93+
composeFile.services().add("rabbitmq", service.andThen(composeService));
94+
}
95+
}
96+
});
7897
};
7998
}
8099

81100
private boolean isAmqpEnabled(Build build) {
82-
return build.dependencies().has("amqp") || build.dependencies().has("amqp-streams");
101+
return build.dependencies().has("amqp");
102+
}
103+
104+
private boolean isAmqpStreamsEnabled(Build build) {
105+
return build.dependencies().has("amqp-streams");
83106
}
84107

85108
}

start-site/src/test/java/io/spring/start/site/extension/dependency/springamqp/SpringAmqpProjectGenerationConfigurationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ void springAmqpStreamsWithoutDockerCompose() {
8484
@Test
8585
void springAmqpStreamsWithDockerCompose() {
8686
ProjectRequest request = createProjectRequest("docker-compose", "amqp-streams");
87-
assertThat(composeFile(request)).hasSameContentAs(new ClassPathResource("compose/rabbitmq.yaml"));
87+
assertThat(composeFile(request)).hasSameContentAs(new ClassPathResource("compose/rabbitmq-streams.yaml"));
8888
}
8989

9090
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
services:
2+
rabbitmq:
3+
image: 'rabbitmq:latest'
4+
environment:
5+
- 'RABBITMQ_DEFAULT_PASS=secret'
6+
- 'RABBITMQ_DEFAULT_USER=myuser'
7+
ports:
8+
- '5552'
9+
- '5672'
10+
configs:
11+
- source: "plugins"
12+
target: "/etc/rabbitmq/enabled_plugins"
13+
14+
configs:
15+
plugins:
16+
content: "[rabbitmq_stream]."

0 commit comments

Comments
 (0)