Interface SpringDataJpaDeferredMessageRepository
- All Superinterfaces:
org.springframework.data.repository.CrudRepository<DeferredMessage,,Long> org.springframework.data.jpa.repository.JpaRepository<DeferredMessage,,Long> org.springframework.data.repository.ListCrudRepository<DeferredMessage,,Long> org.springframework.data.repository.ListPagingAndSortingRepository<DeferredMessage,,Long> org.springframework.data.repository.PagingAndSortingRepository<DeferredMessage,,Long> org.springframework.data.repository.query.QueryByExampleExecutor<DeferredMessage>,org.springframework.data.repository.Repository<DeferredMessage,Long>
@Repository
public interface SpringDataJpaDeferredMessageRepository
extends org.springframework.data.jpa.repository.JpaRepository<DeferredMessage,Long>
-
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionintcountByFailedIsNotNullAndResend(boolean resend) intcountFailedBetween(ZonedDateTime failedStartingFrom, ZonedDateTime failedBefore, boolean resend) intintcountSentImmediatelyBeforeOrSentScheduledBefore(ZonedDateTime sentImmediatelyBefore, ZonedDateTime sentScheduledBefore) intvoiddeleteBySentImmediatelyBeforeOrSentScheduledBefore(ZonedDateTime sentImmediatelyBefore, ZonedDateTime sentScheduledBefore) voidfindMessagesReadyToBeSent(int numMessages) intmarkFailed(long id, ZonedDateTime failedTime, SendFailureReason failReason) intmarkForResend(long id, boolean resend) intmarkSentImmediately(long id, ZonedDateTime sentTime) intmarkSentScheduled(long id, ZonedDateTime sentTime) intsetScheduleAfter(long id, ZonedDateTime scheduleAfter) Methods inherited from interface org.springframework.data.repository.CrudRepository
count, delete, deleteAll, deleteAll, deleteAllById, deleteById, existsById, findById, saveMethods inherited from interface org.springframework.data.jpa.repository.JpaRepository
deleteAllByIdInBatch, deleteAllInBatch, deleteAllInBatch, deleteInBatch, findAll, findAll, flush, getById, getOne, getReferenceById, saveAllAndFlush, saveAndFlushMethods inherited from interface org.springframework.data.repository.ListCrudRepository
findAll, findAllById, saveAllMethods inherited from interface org.springframework.data.repository.ListPagingAndSortingRepository
findAllMethods inherited from interface org.springframework.data.repository.PagingAndSortingRepository
findAllMethods inherited from interface org.springframework.data.repository.query.QueryByExampleExecutor
count, exists, findAll, findBy, findOne
-
Field Details
-
READY_TO_BE_SENT_CONDITION
- See Also:
-
FROM_SENT_IMMEDIATELY_IS_NULL_AND_SENT_SCHEDULED_IS_NULL_AND_CREATED_BEFORE
- See Also:
-
FROM_SENT_IMMEDIATELY_BEFORE_OR_SCHEDULED_BEFORE
- See Also:
-
-
Method Details
-
markSentImmediately
@Transactional @Modifying(flushAutomatically=true) @Query("UPDATE DeferredMessage m SET m.sentImmediately = :sentTime WHERE m.id = :id") int markSentImmediately(@Param("id") long id, @Param("sentTime") ZonedDateTime sentTime) -
markSentScheduled
@Transactional @Modifying(flushAutomatically=true) @Query("UPDATE DeferredMessage m SET m.sentScheduled = :sentTime, m.failed = null, m.resend = false WHERE m.id = :id") int markSentScheduled(@Param("id") long id, @Param("sentTime") ZonedDateTime sentTime) -
markFailed
@Transactional @Modifying(flushAutomatically=true) @Query("UPDATE DeferredMessage m SET m.failed = :failedTime, m.failReason = :failReason, m.resend = false WHERE m.id = :id") int markFailed(@Param("id") long id, @Param("failedTime") ZonedDateTime failedTime, @Param("failReason") SendFailureReason failReason) -
markForResend
@Transactional @Modifying(flushAutomatically=true) @Query("UPDATE DeferredMessage m SET m.resend = :resend WHERE m.id = :id") int markForResend(@Param("id") long id, @Param("resend") boolean resend) -
setScheduleAfter
@Transactional @Modifying(flushAutomatically=true) @Query("UPDATE DeferredMessage m SET m.scheduleAfter = :scheduleAfter WHERE m.id = :id") int setScheduleAfter(@Param("id") long id, @Param("scheduleAfter") ZonedDateTime scheduleAfter) -
findMessagesReadyToBeSent
@Transactional(readOnly=true) @Query(nativeQuery=true, value="SELECT * FROM deferred_message WHERE sent_immediately IS NULL and sent_scheduled IS NULL AND failed IS NULL AND (send_immediately = false OR (send_immediately = true AND CURRENT_TIMESTAMP > schedule_after)) OR resend = true order by id limit :numMessages") List<DeferredMessage> findMessagesReadyToBeSent(@Param("numMessages") int numMessages) -
deleteBySentImmediatelyBeforeOrSentScheduledBefore
@Transactional @Modifying @Query(nativeQuery=true, value="DELETE FROM deferred_message d WHERE d.sent_immediately < :sentImmediatelyBefore OR d.sent_scheduled < :sentScheduledBefore ") void deleteBySentImmediatelyBeforeOrSentScheduledBefore(@Param("sentImmediatelyBefore") ZonedDateTime sentImmediatelyBefore, @Param("sentScheduledBefore") ZonedDateTime sentScheduledBefore) -
countSentImmediatelyBeforeOrSentScheduledBefore
@Transactional(readOnly=true) @Query(nativeQuery=true, value="SELECT count(*) FROM deferred_message d WHERE d.sent_immediately < :sentImmediatelyBefore OR d.sent_scheduled < :sentScheduledBefore ") int countSentImmediatelyBeforeOrSentScheduledBefore(@Param("sentImmediatelyBefore") ZonedDateTime sentImmediatelyBefore, @Param("sentScheduledBefore") ZonedDateTime sentScheduledBefore) -
deleteBySentImmediatelyIsNullAndSentScheduledIsNullAndCreatedBefore
@Transactional @Modifying @Query(nativeQuery=true, value="DELETE FROM deferred_message d WHERE d.sent_immediately IS NULL AND d.sent_scheduled IS NULL AND d.created < :dateTime ") void deleteBySentImmediatelyIsNullAndSentScheduledIsNullAndCreatedBefore(@Param("dateTime") ZonedDateTime dateTime) -
countSentImmediatelyIsNullAndSentScheduledIsNullAndCreatedBefore
@Transactional(readOnly=true) @Query(nativeQuery=true, value="select count(*) FROM deferred_message d WHERE d.sent_immediately IS NULL AND d.sent_scheduled IS NULL AND d.created < :dateTime ") int countSentImmediatelyIsNullAndSentScheduledIsNullAndCreatedBefore(@Param("dateTime") ZonedDateTime dateTime) -
countMessagesReadyToBeSent
@Transactional(readOnly=true) @Query(nativeQuery=true, value="SELECT COUNT (*) FROM deferred_message WHERE sent_immediately IS NULL and sent_scheduled IS NULL AND failed IS NULL AND (send_immediately = false OR (send_immediately = true AND CURRENT_TIMESTAMP > schedule_after)) OR resend = true") int countMessagesReadyToBeSent() -
countByFailedIsNotNullAndResend
@Transactional(readOnly=true) int countByFailedIsNotNullAndResend(boolean resend) -
countFailedBetween
@Transactional(readOnly=true) @Query("SELECT COUNT(d) FROM DeferredMessage d WHERE d.failed IS NOT NULL AND d.failed >= :failedStartingFrom AND d.failed < :failedBefore AND d.resend = :resend") int countFailedBetween(@Param("failedStartingFrom") ZonedDateTime failedStartingFrom, @Param("failedBefore") ZonedDateTime failedBefore, @Param("resend") boolean resend)
-