projects
/
demos
/
kafka
/
chat
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
feat: implemented a listen-method for the chat-service based on a Flux
[demos/kafka/chat]
/
src
/
main
/
java
/
de
/
juplo
/
kafka
/
chatroom
/
api
/
ChatroomController.java
diff --git
a/src/main/java/de/juplo/kafka/chatroom/api/ChatroomController.java
b/src/main/java/de/juplo/kafka/chatroom/api/ChatroomController.java
index
e3146a9
..
21773c1
100644
(file)
--- a/
src/main/java/de/juplo/kafka/chatroom/api/ChatroomController.java
+++ b/
src/main/java/de/juplo/kafka/chatroom/api/ChatroomController.java
@@
-3,10
+3,15
@@
package de.juplo.kafka.chatroom.api;
import de.juplo.kafka.chatroom.domain.Chatroom;
import de.juplo.kafka.chatroom.domain.Message;
import lombok.RequiredArgsConstructor;
import de.juplo.kafka.chatroom.domain.Chatroom;
import de.juplo.kafka.chatroom.domain.Message;
import lombok.RequiredArgsConstructor;
+import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.*;
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
import java.time.Clock;
import java.time.Clock;
+import java.time.Duration;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
+import java.time.LocalTime;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@@
-36,19
+41,27
@@
public class ChatroomController
}
@PutMapping("post/{chatroomId}/{username}/{messageId}")
}
@PutMapping("post/{chatroomId}/{username}/{messageId}")
- public M
essageTo
post(
+ public M
ono<MessageTo>
post(
@PathVariable UUID chatroomId,
@PathVariable String username,
@PathVariable UUID messageId,
@PathVariable UUID chatroomId,
@PathVariable String username,
@PathVariable UUID messageId,
- @RequestBody String
message
)
+ @RequestBody String
text
)
{
{
- return
MessageTo.from(
+ return
chatrooms
.get(chatroomId)
.addMessage(
messageId,
LocalDateTime.now(clock),
username,
chatrooms
.get(chatroomId)
.addMessage(
messageId,
LocalDateTime.now(clock),
username,
- message));
+ text)
+ .map(message -> MessageTo.from(message));
}
}
-}
+
+ @GetMapping(
+ path = "listen/{chatroomId}",
+ produces = MediaType.TEXT_EVENT_STREAM_VALUE)
+ public Flux<Message> listen(@PathVariable UUID chatroomId)
+ {
+ return chatrooms.get(chatroomId).listen();
+ }}