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 Details

    • READY_TO_BE_SENT_CONDITION

      static final String READY_TO_BE_SENT_CONDITION
      See Also:
    • FROM_SENT_IMMEDIATELY_IS_NULL_AND_SENT_SCHEDULED_IS_NULL_AND_CREATED_BEFORE

      static final String FROM_SENT_IMMEDIATELY_IS_NULL_AND_SENT_SCHEDULED_IS_NULL_AND_CREATED_BEFORE
      See Also:
    • FROM_SENT_IMMEDIATELY_BEFORE_OR_SCHEDULED_BEFORE

      static final String 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)