Skip to content

Commit 50319c8

Browse files
authored
BAEL-9190: Sample appliction for Allegro Hermes integration (#18991)
1 parent ece2afc commit 50319c8

File tree

7 files changed

+157
-0
lines changed

7 files changed

+157
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
services:
2+
zk:
3+
image: "confluentinc/cp-zookeeper:7.9.4"
4+
ports:
5+
- "2181:2181"
6+
user: root
7+
environment:
8+
ZOOKEEPER_CLIENT_PORT: 2181
9+
10+
kafka:
11+
image: "confluentinc/cp-kafka:7.9.4"
12+
ports:
13+
- '9092:9092'
14+
depends_on:
15+
- zk
16+
user: root
17+
environment:
18+
KAFKA_ZOOKEEPER_CONNECT: zk:2181
19+
KAFKA_ADVERTISED_LISTENERS: DOCKER_INTERNAL_LISTENER://kafka:29092,DOCKER_EXTERNAL_LISTENER://localhost:9092
20+
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: DOCKER_INTERNAL_LISTENER:PLAINTEXT,DOCKER_EXTERNAL_LISTENER:PLAINTEXT
21+
KAFKA_INTER_BROKER_LISTENER_NAME: DOCKER_INTERNAL_LISTENER
22+
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
23+
24+
frontend:
25+
image: allegro/hermes-frontend:hermes-2.11.7
26+
ports:
27+
- "8080:8080"
28+
depends_on:
29+
- zk
30+
- kafka
31+
32+
consumers:
33+
image: allegro/hermes-consumers:hermes-2.11.7
34+
ports:
35+
- "8070:8070"
36+
depends_on:
37+
- zk
38+
- kafka
39+
40+
management:
41+
image: allegro/hermes-management:hermes-2.11.7
42+
ports:
43+
- "8090:8090"
44+
depends_on:
45+
- zk
46+
- kafka
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
<artifactId>allegro-hermes</artifactId>
7+
<version>1.0-SNAPSHOT</version>
8+
<name>allegro-hermes</name>
9+
10+
<parent>
11+
<groupId>com.baeldung</groupId>
12+
<artifactId>messaging-modules</artifactId>
13+
<version>0.0.1-SNAPSHOT</version>
14+
</parent>
15+
16+
<dependencies>
17+
<dependency>
18+
<groupId>org.springframework.boot</groupId>
19+
<artifactId>spring-boot-starter-web</artifactId>
20+
</dependency>
21+
22+
<dependency>
23+
<groupId>pl.allegro.tech.hermes</groupId>
24+
<artifactId>hermes-client</artifactId>
25+
<version>${hermes.version}</version>
26+
</dependency>
27+
</dependencies>
28+
29+
<properties>
30+
<hermes.version>2.11.10</hermes.version>
31+
</properties>
32+
33+
</project>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.baeldung.messaging.hermes;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
6+
@SpringBootApplication
7+
public class HermesApplication {
8+
public static void main(String[] args) {
9+
SpringApplication.run(HermesApplication.class, args);
10+
}
11+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.baeldung.messaging.hermes;
2+
3+
import java.net.URI;
4+
import java.util.concurrent.CompletableFuture;
5+
import java.util.concurrent.ExecutionException;
6+
7+
import org.slf4j.Logger;
8+
import org.slf4j.LoggerFactory;
9+
import org.springframework.beans.factory.annotation.Value;
10+
import org.springframework.web.bind.annotation.PostMapping;
11+
import org.springframework.web.bind.annotation.RequestMapping;
12+
import org.springframework.web.bind.annotation.RestController;
13+
import org.springframework.web.client.RestClient;
14+
15+
import pl.allegro.tech.hermes.client.HermesClient;
16+
import pl.allegro.tech.hermes.client.HermesClientBuilder;
17+
import pl.allegro.tech.hermes.client.HermesResponse;
18+
import pl.allegro.tech.hermes.client.HermesSender;
19+
import pl.allegro.tech.hermes.client.restclient.RestClientHermesSender;
20+
21+
@RestController
22+
@RequestMapping("/publish")
23+
public class PublishController {
24+
private static final Logger LOG = LoggerFactory.getLogger(PublishController.class);
25+
26+
@Value("${hermes.url}")
27+
private String hermesUrl;
28+
29+
@PostMapping
30+
public void publish() throws ExecutionException, InterruptedException {
31+
HermesSender hermesSender = new RestClientHermesSender(RestClient.create());
32+
33+
HermesClient hermesClient = HermesClientBuilder.hermesClient(hermesSender)
34+
.withURI(URI.create(hermesUrl))
35+
.build();
36+
37+
CompletableFuture<HermesResponse> result =
38+
hermesClient.publishJSON("com.baeldung.hermes.testing", "{\"hello\": 1}");
39+
40+
HermesResponse hermesResponse = result.join();
41+
42+
LOG.info("Result of publishing message: {}", hermesResponse);
43+
}
44+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.baeldung.messaging.hermes;
2+
3+
import org.slf4j.Logger;
4+
import org.slf4j.LoggerFactory;
5+
import org.springframework.web.bind.annotation.PostMapping;
6+
import org.springframework.web.bind.annotation.RequestBody;
7+
import org.springframework.web.bind.annotation.RequestMapping;
8+
import org.springframework.web.bind.annotation.RestController;
9+
10+
@RestController
11+
@RequestMapping("/subscribe")
12+
public class SubscribeController {
13+
private static final Logger LOG = LoggerFactory.getLogger(SubscribeController.class);
14+
15+
@PostMapping("/testing")
16+
public void receive(@RequestBody String body) {
17+
LOG.info("Received message: {}", body);
18+
}
19+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
server.port=7070
2+
3+
hermes.url=http://localhost:8080

messaging-modules/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
<module>postgres-notify</module>
2929
<module>ibm-mq</module>
3030
<module>dapr</module>
31+
<module>allegro-hermes</module>
3132
</modules>
3233

3334
</project>

0 commit comments

Comments
 (0)