Skip to content

Commit f50680e

Browse files
authored
Add eventgrid system events migration guide (Azure#45843)
1 parent 1a0c0cd commit f50680e

File tree

1 file changed

+195
-0
lines changed

1 file changed

+195
-0
lines changed
Lines changed: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
1+
# Migration Guide: System Events from azure-messaging-eventgrid to azure-messaging-eventgrid-systemevents
2+
3+
This guide is intended to assist in the migration of system event handling code from the deprecated system events in `azure-messaging-eventgrid` to the new dedicated `azure-messaging-eventgrid-systemevents` package.
4+
5+
## Table of contents
6+
7+
- [Migration Guide: System Events from azure-messaging-eventgrid to azure-messaging-eventgrid-systemevents](#migration-guide-system-events-from-azure-messaging-eventgrid-to-azure-messaging-eventgrid-systemevents)
8+
- [Table of contents](#table-of-contents)
9+
- [Migration benefits](#migration-benefits)
10+
- [Important changes](#important-changes)
11+
- [Package separation and dependency management](#package-separation-and-dependency-management)
12+
- [Import statement changes](#import-statement-changes)
13+
- [System event names and constants](#system-event-names-and-constants)
14+
- [Event deserialization](#event-deserialization)
15+
- [Step-by-step migration](#step-by-step-migration)
16+
- [Step 1: Update dependencies](#step-1-update-dependencies)
17+
- [Step 2: Update import statements](#step-2-update-import-statements)
18+
- [Step 3: Update SystemEventNames usage](#step-3-update-systemeventnames-usage)
19+
- [Step 4: Test your changes](#step-4-test-your-changes)
20+
- [Migration examples](#migration-examples)
21+
- [Example 1: Basic event handling](#example-1-basic-event-handling)
22+
- [Example 2: Event filtering and processing](#example-2-event-filtering-and-processing)
23+
- [Additional resources](#additional-resources)
24+
25+
## Migration benefits
26+
27+
The separation of system events into a dedicated package provides several benefits:
28+
29+
- **Reduced dependency footprint**: Applications that only need system event models don't need to include the full Event Grid publisher client
30+
- **Better versioning**: System event models can be versioned independently from the publisher client
31+
- **Improved maintainability**: Clear separation of concerns between event publishing and event model definitions
32+
- **Enhanced discoverability**: Dedicated package makes it easier to find and use system event models
33+
34+
## Important changes
35+
36+
### Package separation and dependency management
37+
38+
**Before (Deprecated)**:
39+
All system events were included in the main `azure-messaging-eventgrid` package.
40+
41+
**After (Recommended)**:
42+
System events are now in a separate `azure-messaging-eventgrid-systemevents` package.
43+
44+
### Import statement changes
45+
46+
**Before (Deprecated)**:
47+
```java
48+
import com.azure.messaging.eventgrid.systemevents.StorageBlobCreatedEventData;
49+
import com.azure.messaging.eventgrid.systemevents.StorageBlobDeletedEventData;
50+
import com.azure.messaging.eventgrid.SystemEventNames;
51+
```
52+
53+
**After (Recommended)**:
54+
```java
55+
import com.azure.messaging.eventgrid.systemevents.models.StorageBlobCreatedEventData;
56+
import com.azure.messaging.eventgrid.systemevents.models.StorageBlobDeletedEventData;
57+
import com.azure.messaging.eventgrid.systemevents.SystemEventNames;
58+
```
59+
60+
### System event names and constants
61+
62+
The `SystemEventNames` class has moved from the main package to the system events package:
63+
64+
**Before (Deprecated)**:
65+
```java
66+
import com.azure.messaging.eventgrid.SystemEventNames;
67+
68+
if (SystemEventNames.STORAGE_BLOB_CREATED.equals(event.getEventType())) {
69+
// Handle blob created event
70+
}
71+
```
72+
73+
**After (Recommended)**:
74+
```java
75+
import com.azure.messaging.eventgrid.systemevents.SystemEventNames;
76+
77+
if (SystemEventNames.STORAGE_BLOB_CREATED.equals(event.getEventType())) {
78+
// Handle blob created event
79+
}
80+
```
81+
82+
### Event deserialization
83+
84+
Event deserialization patterns remain the same, only import statements change:
85+
86+
**Before (Deprecated)**:
87+
```java
88+
import com.azure.messaging.eventgrid.systemevents.StorageBlobCreatedEventData;
89+
90+
StorageBlobCreatedEventData eventData = event.getData().toObject(StorageBlobCreatedEventData.class);
91+
```
92+
93+
**After (Recommended)**:
94+
```java
95+
import com.azure.messaging.eventgrid.systemevents.models.StorageBlobCreatedEventData;
96+
97+
StorageBlobCreatedEventData eventData = event.getData().toObject(StorageBlobCreatedEventData.class);
98+
```
99+
100+
## Step-by-step migration
101+
102+
### Step 1: Update dependencies
103+
104+
Add the new system events dependency to your project:
105+
106+
**Maven:**
107+
```xml
108+
<dependency>
109+
<groupId>com.azure</groupId>
110+
<artifactId>azure-messaging-eventgrid-systemevents</artifactId>
111+
<version>1.0.0</version>
112+
</dependency>
113+
```
114+
115+
Note: If you're only consuming events and not publishing them, you can remove the main `azure-messaging-eventgrid` dependency. If you need to publish events, keep both dependencies.
116+
117+
### Step 2: Update import statements
118+
119+
Replace all system event imports to use the new package:
120+
121+
**Find and replace across your codebase:**
122+
123+
1. Replace `import com.azure.messaging.eventgrid.SystemEventNames;`
124+
with `import com.azure.messaging.eventgrid.systemevents.SystemEventNames;`
125+
126+
2. Replace all system event data class imports:
127+
- From: `import com.azure.messaging.eventgrid.systemevents.*EventData;`
128+
- To: `import com.azure.messaging.eventgrid.systemevents.models.*EventData;`
129+
130+
### Step 3: Update SystemEventNames usage
131+
132+
Update any usage of the `SystemEventNames` class to import from the new package:
133+
134+
**Before:**
135+
```java
136+
import com.azure.messaging.eventgrid.SystemEventNames;
137+
```
138+
139+
**After:**
140+
```java
141+
import com.azure.messaging.eventgrid.systemevents.SystemEventNames;
142+
```
143+
144+
### Step 4: Test your changes
145+
146+
After making the changes, ensure your application still compiles and runs correctly:
147+
148+
1. Build your project to verify there are no compilation errors
149+
2. Run your existing tests to ensure functionality is preserved
150+
3. Verify that event deserialization still works as expected
151+
152+
## Migration examples
153+
154+
### Example 1: Basic event handling
155+
156+
**Before (Deprecated):**
157+
```java
158+
import com.azure.messaging.eventgrid.EventGridEvent;
159+
import com.azure.messaging.eventgrid.SystemEventNames;
160+
import com.azure.messaging.eventgrid.systemevents.StorageBlobCreatedEventData;
161+
162+
public void handleEvent(EventGridEvent event) {
163+
if (SystemEventNames.STORAGE_BLOB_CREATED.equals(event.getEventType())) {
164+
StorageBlobCreatedEventData eventData = event.getData()
165+
.toObject(StorageBlobCreatedEventData.class);
166+
System.out.println("Blob created: " + eventData.getUrl());
167+
}
168+
}
169+
```
170+
171+
**After (Recommended):**
172+
```java
173+
import com.azure.messaging.eventgrid.EventGridEvent;
174+
import com.azure.messaging.eventgrid.systemevents.SystemEventNames;
175+
import com.azure.messaging.eventgrid.systemevents.models.StorageBlobCreatedEventData;
176+
177+
public void handleEvent(EventGridEvent event) {
178+
if (SystemEventNames.STORAGE_BLOB_CREATED.equals(event.getEventType())) {
179+
StorageBlobCreatedEventData eventData = event.getData()
180+
.toObject(StorageBlobCreatedEventData.class);
181+
System.out.println("Blob created: " + eventData.getUrl());
182+
}
183+
}
184+
```
185+
186+
## Additional resources
187+
188+
- [Azure Event Grid System Events Package README](https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/eventgrid/azure-messaging-eventgrid-systemevents/README.md)
189+
- [Azure Event Grid Documentation](https://docs.microsoft.com/azure/event-grid/)
190+
- [Azure Event Grid System Events Reference](https://docs.microsoft.com/azure/event-grid/system-topics)
191+
- [Azure SDK for Java Guidelines](https://azure.github.io/azure-sdk/java_introduction.html)
192+
193+
<!-- Links -->
194+
[azure-messaging-eventgrid]: https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/eventgrid/azure-messaging-eventgrid
195+
[azure-messaging-eventgrid-systemevents]: https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/eventgrid/azure-messaging-eventgrid-systemevents

0 commit comments

Comments
 (0)