- Message message = new Message(id, (long)messages.size(), timestamp, user, text);
-
- MessageKey key = new MessageKey(user, id);
- Message existing = messages.get(key);
- if (existing != null)
- {
- log.info("Message with key {} already exists; {}", key, existing);
- if (!message.equals(existing))
- throw new MessageMutationException(message, existing);
- return Mono.empty();
- }
-
- messages.put(key, message);
- return Mono
- .fromSupplier(() -> message)
- .log();
+ return chatroomService
+ .persistMessage(Message.MessageKey.of(user, id), timestamp, text)
+ .doOnNext(message ->
+ {
+ Sinks.EmitResult result = sink.tryEmitNext(message);
+ if (result.isFailure())
+ {
+ log.warn("Emitting of message failed with {} for {}", result.name(), message);
+ }
+ });