Встречается на собеседованиях • сегодня

Что такое паттерн Outbox

Паттерн Outbox используется для обеспечения надежной доставки событий или сообщений в распределенных системах. Основная идея — сохранять события в той же транзакции, что и изменения данных, чтобы гарантировать их атомарность.

Пример с Spring и JPA:

java
@Entity
public class OutboxEvent {
    @Id
    private String id;
    private String aggregateType;
    private String aggregateId;
    private String eventType;
    private String payload;
    private LocalDateTime createdAt;
}

@Service
@Transactional
public class OrderService {
@Autowired
private OrderRepository orderRepository;
@Autowired
private OutboxEventRepository outboxEventRepository;

text
public void createOrder(Order order) {
    orderRepository.save(order);
    
    OutboxEvent event = new OutboxEvent();
    event.setId(UUID.randomUUID().toString());
    event.setAggregateType("Order");
    event.setAggregateId(order.getId());
    event.setEventType("OrderCreated");
    event.setPayload(toJson(order));
    event.setCreatedAt(LocalDateTime.now());
    
    outboxEventRepository.save(event);
}

}

text

Отдельный процесс (например, Scheduled task) затем читает события из Outbox и публикует их в брокер сообщений (Kafka, RabbitMQ).
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы