package com.mailserver.delivery; import org.springframework.stereotype.Service; import reactor.core.publisher.Mono; import java.time.Instant; /** Puts a message for one external recipient into the delivery queue (the worker sends it). */ @Service public class OutboundQueue { private final OutboundRepository repository; public OutboundQueue(OutboundRepository repository) { this.repository = repository; } public Mono enqueue(String mailFrom, String rcptTo, byte[] signedMessage) { OutboundMessage message = new OutboundMessage(); message.setMailFrom(mailFrom); message.setRcptTo(rcptTo); message.setMessage(signedMessage); message.setStatus(OutboundMessage.PENDING); message.setCreatedAt(Instant.now()); message.setNextAttemptAt(Instant.now()); return repository.save(message); } }