Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
36d3b80
docs(crons): Document monitor config from @Scheduled for Spring @Sent…
wedamija Oct 2, 2026
a8bb8a9
docs(crons): Note Spring zone default and short period strings
wedamija Oct 2, 2026
f4e5bf1
docs(crons): Make Spring @Scheduled monitor config opt-in
wedamija Oct 2, 2026
6773da4
docs(java): Note Spring schedules that send no monitor config
wedamija Oct 2, 2026
a9c97ec
docs(crons): Note fixedDelay and options.cron defaults for Spring mon…
wedamija Oct 3, 2026
f794069
docs(crons): Narrow the Spring day field limits and options.cron note
wedamija Oct 5, 2026
baa0f45
docs(crons): Spring @Scheduled monitor config is on by default
wedamija Oct 5, 2026
6905665
docs(crons): Shorten Spring upsertMonitorConfig opt-out note
wedamija Oct 5, 2026
47378ae
docs(java): Point the monitor config note at releases after 8.60.0
wedamija Oct 13, 2026
87c9f61
docs(crons): Document monitoring all Spring @Scheduled methods
wedamija Oct 17, 2026
b6131a7
docs(crons): Recommend monitoring all Spring @Scheduled methods first
wedamija Oct 20, 2026
39f3abe
chore: Retrigger Vercel build
wedamija Oct 20, 2026
13b829c
docs(crons): Fix Spring monitor-all version and requirements
wedamija Oct 20, 2026
ae06afc
docs(crons): Spring Boot skips jobs with unsupported schedules when m…
wedamija Oct 29, 2026
a471fab
docs(java): Make the Spring @Scheduled monitor config opt-in
wedamija Nov 5, 2026
4340037
Merge branch 'danf/spring-checkin-scheduled-docs' into danf/spring-mo…
wedamija Nov 5, 2026
024bd37
docs(java): Note that monitoring all @Scheduled methods always sends …
wedamija Nov 5, 2026
d22417d
Merge remote-tracking branch 'origin/master' into p
wedamija Nov 11, 2026
ecd0f51
docs(crons): Name 8.64.0 as the first Java SDK version with Spring mo…
wedamija Nov 11, 2026
3e9f7e0
Merge branch 'p' into c
wedamija Nov 11, 2026
e09b4d0
docs(crons): Name 8.64.0 as the first Java SDK version with monitor-s…
wedamija Nov 11, 2026
c25f5c4
docs(crons): Note that private and static @Scheduled methods aren't m…
wedamija Nov 11, 2026
a092af1
Merge remote-tracking branch 'origin/master' into danf/spring-monitor…
wedamija Nov 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion platform-includes/crons/requirements/java.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@
- Send a monitor configuration from your code as shown below, and Sentry creates the monitor on the first check-in. You can also [create the monitor in Sentry](https://sentry.io/issues/alerts/new/crons/) instead.
</PlatformSection>
<PlatformSection supported={["java.spring-boot"]}>
- From Sentry Java SDK version `8.64.0`, `@SentryCheckIn(upsertMonitorConfig = true)` sends a monitor configuration based on the method's `@Scheduled` annotation, and Sentry creates the monitor on the first check-in. Without it, on older SDK versions, or for schedules that can't be converted, [create the monitor in Sentry](https://sentry.io/issues/alerts/new/crons/) first, because Sentry drops check-ins for a slug that has no monitor.
- From Sentry Java SDK version `8.64.0`, `sentry.monitor-scheduled-tasks=true` and `@SentryCheckIn(upsertMonitorConfig = true)` send a monitor configuration based on the method's `@Scheduled` annotation, and Sentry creates the monitor on the first check-in. Without either, on older SDK versions, or for schedules that can't be converted, [create the monitor in Sentry](https://sentry.io/issues/alerts/new/crons/) first, because Sentry drops check-ins for a slug that has no monitor.
</PlatformSection>
22 changes: 20 additions & 2 deletions platform-includes/crons/setup/java.spring-boot.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,31 @@ If you are using [Quartz](http://www.quartz-scheduler.org/), please see <Platfor

<Alert level="info">

The `@SentryCheckIn` annotation requires `org.aspectj:aspectjweaver` to be present as a dependency in your project.
The `@SentryCheckIn` annotation and `sentry.monitor-scheduled-tasks` require `org.aspectj:aspectjweaver` to be present as a dependency in your project.

</Alert>

## Check-Ins (Recommended)

Check-in monitoring allows you to track a job's progress by completing two check-ins: one at the start of your job and another at the end of your job. This two-step process allows Sentry to notify you if your job didn't start when expected (missed) or if it exceeded its maximum runtime (failed). To start sending check-ins simply add the `@SentryCheckIn("<monitor-slug>")` annotation to the method you want to send check-ins for.
Check-in monitoring allows you to track a job's progress by completing two check-ins: one at the start of your job and another at the end of your job. This two-step process allows Sentry to notify you if your job didn't start when expected (missed) or if it exceeded its maximum runtime (failed).

### Monitor All `@Scheduled` Methods

We recommend monitoring every `@Scheduled` method. From Sentry Java SDK version `8.64.0`, you can do this without adding `@SentryCheckIn` to each one:

```properties {filename:application.properties}
sentry.monitor-scheduled-tasks=true
# Optional: methods to skip, as ClassName.methodName or a regular expression
sentry.exclude-scheduled-tasks=ReportJobs.sendDailyReport,Internal.*
```

Each method gets a monitor slug built from its class and method name, for example `report-jobs-send-daily-report` for `ReportJobs.sendDailyReport`. Nested classes include the outer class name (`Outer.Inner.method`), and slugs longer than 50 characters are shortened with a hash suffix. The schedule is always sent, as described in [Monitor Configuration From `@Scheduled`](#monitor-configuration-from-scheduled), so Sentry creates each monitor on its first check-in. Methods with schedules that can't be expressed in the Crons schedule format (for example, a `fixedDelay` job) aren't monitored. To monitor one, add `@SentryCheckIn` with a slug and create the monitor in Sentry first.

Methods annotated with `@SentryCheckIn` keep their own slug and settings, including `upsertMonitorConfig`, and are checked in once per run. Methods on `final` classes, `final`, `private`, and `static` methods, and reactive or Kotlin `suspend` methods can't be monitored this way.

### Monitor Specific Methods

To send check-ins for specific methods, add the `@SentryCheckIn("<monitor-slug>")` annotation to the method you want to send check-ins for.

```java {tabTitle:Java (Spring Boot 3)} {mdExpandTabs}
import io.sentry.spring.jakarta.checkin.SentryCheckIn;
Expand Down
Loading