Skip to content

Commit af6be31

Browse files
committed
add eventbridge scheduler code and YAML SOS file
1 parent 35527b5 commit af6be31

File tree

3 files changed

+77
-5
lines changed

3 files changed

+77
-5
lines changed

.doc_gen/metadata/scheduler_metadata.yaml

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@ scheduler_hello:
1717
scheduler: {ListSchedules}
1818
scheduler_CreateSchedule:
1919
languages:
20+
Java:
21+
versions:
22+
- sdk_version: 2
23+
github: javav2/example_code/eventbridgescheduler
24+
excerpts:
25+
- description:
26+
snippet_tags:
27+
- scheduler.javav2.create.schedule.main
2028
.NET:
2129
versions:
2230
- sdk_version: 3
@@ -30,6 +38,14 @@ scheduler_CreateSchedule:
3038
scheduler: {CreateSchedule}
3139
scheduler_CreateScheduleGroup:
3240
languages:
41+
Java:
42+
versions:
43+
- sdk_version: 2
44+
github: javav2/example_code/eventbridgescheduler
45+
excerpts:
46+
- description:
47+
snippet_tags:
48+
- scheduler.javav2.create.schedule.group.main
3349
.NET:
3450
versions:
3551
- sdk_version: 3
@@ -43,7 +59,15 @@ scheduler_CreateScheduleGroup:
4359
scheduler: {CreateScheduleGroup}
4460
scheduler_DeleteSchedule:
4561
languages:
46-
.NET:
62+
Java:
63+
versions:
64+
- sdk_version: 2
65+
github: javav2/example_code/eventbridgescheduler
66+
excerpts:
67+
- description:
68+
snippet_tags:
69+
- scheduler.javav2.delete.schedule.main
70+
.NET:
4771
versions:
4872
- sdk_version: 3
4973
github: dotnetv3/EventBridge Scheduler
@@ -56,6 +80,14 @@ scheduler_DeleteSchedule:
5680
scheduler: {DeleteSchedule}
5781
scheduler_DeleteScheduleGroup:
5882
languages:
83+
Java:
84+
versions:
85+
- sdk_version: 2
86+
github: javav2/example_code/eventbridgescheduler
87+
excerpts:
88+
- description:
89+
snippet_tags:
90+
- scheduler.javav2.delete.schedule.group.main
5991
.NET:
6092
versions:
6193
- sdk_version: 3

javav2/example_code/eventbridgescheduler/src/main/java/com/example/eventbridgeschedule/scenario/EventbridgeSchedulerActions.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@
1717
import software.amazon.awssdk.services.scheduler.model.CreateScheduleGroupResponse;
1818
import software.amazon.awssdk.services.scheduler.model.CreateScheduleRequest;
1919
import software.amazon.awssdk.services.scheduler.model.DeleteScheduleGroupRequest;
20+
import software.amazon.awssdk.services.scheduler.model.DeleteScheduleRequest;
2021
import software.amazon.awssdk.services.scheduler.model.FlexibleTimeWindow;
2122
import software.amazon.awssdk.services.scheduler.model.FlexibleTimeWindowMode;
23+
import software.amazon.awssdk.services.scheduler.model.ResourceNotFoundException;
2224
import software.amazon.awssdk.services.scheduler.model.Target;
2325
import java.time.Instant;
2426
import java.util.concurrent.CompletableFuture;
@@ -190,5 +192,33 @@ public CompletableFuture<Void> deleteScheduleGroupAsync(String name) {
190192
}
191193
}
192194
// snippet-end:[scheduler.javav2.delete.schedule.group.main]
195+
196+
// snippet-start:[scheduler.javav2.delete.schedule.main]
197+
public CompletableFuture<Boolean> deleteScheduleAsync(String name, String groupName) {
198+
return CompletableFuture.supplyAsync(() -> {
199+
try {
200+
DeleteScheduleRequest request = DeleteScheduleRequest.builder()
201+
.name(name)
202+
.groupName(groupName)
203+
.build();
204+
205+
getAsyncClient().deleteSchedule(request).get();
206+
logger.info(String.format("Successfully deleted schedule with name '%s'.", name));
207+
return true;
208+
} catch (ResourceNotFoundException ex) {
209+
logger.info(String.format("Failed to delete schedule with ID '%s' because the resource was not found: %s", name, ex.getMessage()));
210+
return true;
211+
} catch (Exception ex) {
212+
logger.info(String.format("An error occurred while deleting schedule with ID '%s': %s", name, ex.getMessage()));
213+
return false;
214+
}
215+
}).whenComplete((result, throwable) -> {
216+
if (throwable != null) {
217+
// Handle any exceptions that occurred during the operation
218+
logger.info("Error deleting schedule: " + throwable.getMessage());
219+
}
220+
});
221+
}
222+
// snippet-end:[scheduler.javav2.delete.schedule.main]
193223
}
194224
// snippet-end:[scheduler.javav2.actions.main]

javav2/example_code/eventbridgescheduler/src/main/java/com/example/eventbridgeschedule/scenario/EventbridgeSchedulerScenario.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ public class EventbridgeSchedulerScenario {
4848
private static String STACK_NAME = "scott-workflow-stack-name11";
4949
private static final String scheduleGroupName = "scott-schedules-group11";
5050

51+
private static String recurringScheduleName = "";
52+
5153
private static final EventbridgeSchedulerActions eventbridgeActions = new EventbridgeSchedulerActions();
5254

5355
public static final String DASHES = new String(new char[80]).replace("\0", "-");
@@ -131,6 +133,13 @@ public static void cleanUp() {
131133
logger.info("First, delete the schedule groups name");
132134
waitForInputToContinue(scanner);
133135
eventbridgeActions.deleteScheduleGroupAsync(scheduleGroupName);
136+
137+
logger.info("Next, delete the schedules");
138+
waitForInputToContinue(scanner);
139+
eventbridgeActions.deleteScheduleAsync("", recurringScheduleName);
140+
141+
logger.info("Finally, destroy the CloudFormation stack");
142+
waitForInputToContinue(scanner);
134143
CloudFormationHelper.destroyCloudFormationStack(STACK_NAME);
135144
}
136145

@@ -260,11 +269,12 @@ public static Boolean createOneTimeSchedule() {
260269
*/
261270
public static Boolean createRecurringSchedule() {
262271
logger.info("Creating a recurring schedule to send events for one hour...");
263-
String scheduleName = promptUserForResourceName("Enter a name for the recurring schedule:");
272+
recurringScheduleName = promptUserForResourceName("Enter a name for the recurring schedule:");
264273

265274
// Prompt the user for the schedule rate (in minutes).
266275
int scheduleRateInMinutes = promptUserForInteger("Enter the desired schedule rate (in minutes): ");
267276
String scheduleExpression = "rate(" + scheduleRateInMinutes + " minutes)";
277+
/*
268278
try {
269279
// Call the asynchronous method and wait for it to complete
270280
eventbridgeActions.createScheduleGroup(scheduleName).join(); // Use join() to block until completion
@@ -274,14 +284,14 @@ public static Boolean createRecurringSchedule() {
274284
// Handle the exception thrown from the whenComplete block
275285
logger.info("Error occurred: {} ", e.getMessage());
276286
}
277-
287+
*/
278288
return eventbridgeActions.createScheduleAsync(
279-
scheduleName,
289+
recurringScheduleName,
280290
scheduleExpression,
281291
scheduleGroupName,
282292
snsTopicArn,
283293
roleArn,
284-
"Recurrent event test from schedule " + scheduleName,
294+
"Recurrent event test from schedule " + recurringScheduleName,
285295
true,
286296
true).join();
287297
}

0 commit comments

Comments
 (0)