1 package de.juplo.kafka.chat.backend;
3 import de.juplo.kafka.chat.backend.domain.ShardingStrategy;
4 import org.junit.jupiter.api.BeforeAll;
5 import org.springframework.beans.factory.annotation.Autowired;
6 import org.springframework.boot.test.context.SpringBootTest;
7 import org.springframework.kafka.core.KafkaTemplate;
8 import org.springframework.kafka.test.context.EmbeddedKafka;
10 import java.util.UUID;
12 import static de.juplo.kafka.chat.backend.KafkaConfigurationIT.CHATROOMS_TOPIC;
13 import static de.juplo.kafka.chat.backend.KafkaConfigurationIT.MESSAGES_TOPIC;
17 webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
19 "chat.backend.services=kafka",
20 "chat.backend.kafka.client-id=TEST",
21 "chat.backend.kafka.bootstrap-servers=${spring.embedded.kafka.brokers}",
22 "spring.kafka.bootstrap-servers=${spring.embedded.kafka.brokers}",
23 "chat.backend.kafka.chatrooms-topic=" + CHATROOMS_TOPIC,
24 "chat.backend.kafka.messages-topic=" + MESSAGES_TOPIC,
25 "chat.backend.kafka.num-partitions=3" })
26 @EmbeddedKafka(topics = { CHATROOMS_TOPIC, MESSAGES_TOPIC }, partitions = 3)
27 class KafkaConfigurationIT extends AbstractConfigurationIT
29 final static String CHATROOMS_TOPIC = "TEST_CHAT_ROOMS";
30 final static String MESSAGES_TOPIC = "TEST_CHAT_MESSAGES";
33 public static void test(
34 @Autowired ShardingStrategy shardingStrategy,
35 @Autowired KafkaTemplate<String, String> messageTemplate,
36 @Autowired KafkaTemplate<Integer, String> chatRoomTemplate)
38 UUID chatRoomId = UUID.fromString("5c73531c-6fc4-426c-adcb-afc5c140a0f7");
39 int shard = shardingStrategy.selectShard(chatRoomId);
40 chatRoomTemplate.send(CHATROOMS_TOPIC, null,"{ \"id\": \"5c73531c-6fc4-426c-adcb-afc5c140a0f7\", \"shard\": " + shard + ", \"name\": \"FOO\" }");
41 messageTemplate.send(MESSAGES_TOPIC,"5c73531c-6fc4-426c-adcb-afc5c140a0f7","{ \"id\" : 1, \"user\" : \"peter\", \"text\" : \"Hallo, ich heiße Peter!\" }");
42 messageTemplate.send(MESSAGES_TOPIC,"5c73531c-6fc4-426c-adcb-afc5c140a0f7","{ \"id\" : 1, \"user\" : \"ute\", \"text\" : \"Ich bin Ute...\" }");
43 messageTemplate.send(MESSAGES_TOPIC,"5c73531c-6fc4-426c-adcb-afc5c140a0f7","{ \"id\" : 2, \"user\" : \"peter\", \"text\" : \"Willst du mit mir gehen?\" }");
44 messageTemplate.send(MESSAGES_TOPIC,"5c73531c-6fc4-426c-adcb-afc5c140a0f7","{ \"id\" : 1, \"user\" : \"klaus\", \"text\" : \"Ja? Nein? Vielleicht??\" }");