package io.trygvis.test; import io.trygvis.queue.Task; import io.trygvis.queue.TaskEffect; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Random; import static java.util.Collections.emptyList; import static org.springframework.transaction.annotation.Propagation.MANDATORY; @Component("createArticle") @Transactional(propagation = MANDATORY) public class CreateArticleCallable implements TaskEffect { private final Logger log = LoggerFactory.getLogger(getClass()); private Random random = new Random(); @Override public List apply(Task task) throws Exception { List arguments = task.arguments; log.info("CreateArticeJob.run: BEGIN"); if (random.nextInt() % 3 == 0) { throw new RuntimeException("failing create article"); } Date now = new Date(); log.info("now = {}", now); Article article = new Article(new Date(), null, "title", "body"); // entityManager.persist(article); log.info("CreateArticeJob.run: END"); return emptyList(); } }