Skip to main content 首页 创作者 christophacham agent-skills-library azure-eventgrid-java
azure-eventgrid-java Build event-driven applications with Azure Event Grid SDK for Java. Use when publishing events, implementing pub/sub patterns, or integrating with Azure services via events.
跳到安装 Skills Marketplace 发现并探索由社区构建的 Agent Skills
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/christophacham/agent-skills-library --skill azure-eventgrid-java命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
下载 Zip 下载中... name azure-eventgrid-java description Build event-driven applications with Azure Event Grid SDK for Java. Use when publishing events, implementing pub/sub patterns, or integrating with Azure services via events. risk unknown source community date_added 2026-02-27
Azure Event Grid SDK for Java
Build event-driven applications using the Azure Event Grid SDK for Java.
Installation
<dependency >
<groupId > com.azure</groupId >
<artifactId > azure-messaging-eventgrid</artifactId >
<version > 4.27.0</version >
</dependency >
Client Creation
EventGridPublisherClient
import com.azure.messaging.eventgrid.EventGridPublisherClient;
import com.azure.messaging.eventgrid.EventGridPublisherClientBuilder;
import com.azure.core.credential.AzureKeyCredential;
EventGridPublisherClient<EventGridEvent> client = new EventGridPublisherClientBuilder ()
.endpoint("<topic-endpoint>" )
.credential(new AzureKeyCredential ("<access-key>" ))
.buildEventGridEventPublisherClient();
EventGridPublisherClient<CloudEvent> cloudClient = new EventGridPublisherClientBuilder ()
.endpoint("<topic-endpoint>" )
.credential(new AzureKeyCredential ("<access-key>" ))
.buildCloudEventPublisherClient();
With DefaultAzureCredential import com.azure.identity.DefaultAzureCredentialBuilder;
EventGridPublisherClient<EventGridEvent> client = new EventGridPublisherClientBuilder ()
.endpoint("<topic-endpoint>" )
.credential(new DefaultAzureCredentialBuilder ().build())
.buildEventGridEventPublisherClient();
Async Client import com.azure.messaging.eventgrid.EventGridPublisherAsyncClient;
EventGridPublisherAsyncClient<EventGridEvent> asyncClient = new EventGridPublisherClientBuilder ()
.endpoint("<topic-endpoint>" )
.credential(new AzureKeyCredential ("<access-key>" ))
.buildEventGridEventPublisherAsyncClient();
Event Types Type Description EventGridEventAzure Event Grid native schema CloudEventCNCF CloudEvents 1.0 specification BinaryDataCustom schema events
Core Patterns
Publish EventGridEvent import com.azure.messaging.eventgrid.EventGridEvent;
import com.azure.core.util.BinaryData;
EventGridEvent event = new EventGridEvent (
"resource/path" ,
"MyApp.Events.OrderCreated" ,
BinaryData.fromObject(new OrderData ("order-123" , 99.99 )),
"1.0"
);
client.sendEvent(event);
Publish Multiple Events List<EventGridEvent> events = Arrays.asList(
new EventGridEvent ("orders/1" , "Order.Created" ,
BinaryData.fromObject(order1), "1.0" ),
new EventGridEvent ("orders/2" , "Order.Created" ,
BinaryData.fromObject(order2), "1.0" )
);
client.sendEvents(events);
Publish CloudEvent import com.azure.core.models.CloudEvent;
import com.azure.core.models.CloudEventDataFormat;
CloudEvent cloudEvent = new CloudEvent (
"/myapp/orders" ,
"order.created" ,
BinaryData.fromObject(orderData),
CloudEventDataFormat.JSON
);
cloudEvent.setSubject("orders/12345" );
cloudEvent.setId(UUID.randomUUID().toString());
cloudClient.sendEvent(cloudEvent);
Publish CloudEvents Batch List<CloudEvent> cloudEvents = Arrays.asList(
new CloudEvent ("/app" , "event.type1" , BinaryData.fromString("data1" ), CloudEventDataFormat.JSON),
new CloudEvent ("/app" , "event.type2" , BinaryData.fromString("data2" ), CloudEventDataFormat.JSON)
);
cloudClient.sendEvents(cloudEvents);
Async Publishing asyncClient.sendEvent(event)
.subscribe(
unused -> System.out.println("Event sent successfully" ),
error -> System.err.println("Error: " + error.getMessage())
);
asyncClient.sendEvents(events)
.doOnSuccess(unused -> System.out.println("All events sent" ))
.doOnError(error -> System.err.println("Failed: " + error))
.block();
Custom Event Data Class public class OrderData {
private String orderId;
private double amount;
private String customerId;
public OrderData (String orderId, double amount) {
this .orderId = orderId;
this .amount = amount;
}
}
OrderData order = new OrderData ("ORD-123" , 150.00 );
EventGridEvent event = new EventGridEvent (
"orders/" + order.getOrderId(),
"MyApp.Order.Created" ,
BinaryData.fromObject(order),
"1.0"
);
Receiving Events
Parse EventGridEvent import com.azure.messaging.eventgrid.EventGridEvent;
String jsonPayload = "[{\"id\": \"...\", ...}]" ;
List<EventGridEvent> events = EventGridEvent.fromString(jsonPayload);
for (EventGridEvent event : events) {
System.out.println("Event Type: " + event.getEventType());
System.out.println("Subject: " + event.getSubject());
System.out.println("Event Time: " + event.getEventTime());
BinaryData data = event.getData();
OrderData orderData = data.toObject(OrderData.class);
}
Parse CloudEvent import com.azure.core.models.CloudEvent;
String cloudEventJson = "[{\"specversion\": \"1.0\", ...}]" ;
List<CloudEvent> cloudEvents = CloudEvent.fromString(cloudEventJson);
for (CloudEvent event : cloudEvents) {
System.out.println("Type: " + event.getType());
System.out.println("Source: " + event.getSource());
System.out.println("ID: " + event.getId());
MyEventData data = event.getData().toObject(MyEventData.class);
}
Handle System Events import com.azure.messaging.eventgrid.systemevents.*;
for (EventGridEvent event : events) {
if (event.getEventType().equals("Microsoft.Storage.BlobCreated" )) {
StorageBlobCreatedEventData blobData =
event.getData().toObject(StorageBlobCreatedEventData.class);
System.out.println("Blob URL: " + blobData.getUrl());
}
}
Event Grid Namespaces (MQTT/Pull)
Receive from Namespace Topic import com.azure.messaging.eventgrid.namespaces.EventGridReceiverClient;
import com.azure.messaging.eventgrid.namespaces.EventGridReceiverClientBuilder;
import com.azure.messaging.eventgrid.namespaces.models.*;
EventGridReceiverClient receiverClient = new EventGridReceiverClientBuilder ()
.endpoint("<namespace-endpoint>" )
.credential(new AzureKeyCredential ("<key>" ))
.topicName("my-topic" )
.subscriptionName("my-subscription" )
.buildClient();
ReceiveResult result = receiverClient.receive(10 , Duration.ofSeconds(30 ));
for (ReceiveDetails detail : result.getValue()) {
CloudEvent event = detail.getEvent();
System.out.println("Event: " + event.getType());
receiverClient.acknowledge(Arrays.asList(detail.getBrokerProperties().getLockToken()));
}
Reject or Release Events
receiverClient.reject(Arrays.asList(lockToken));
receiverClient.release(Arrays.asList(lockToken));
receiverClient.release(Arrays.asList(lockToken),
new ReleaseOptions ().setDelay(ReleaseDelay.BY_60_SECONDS));
Error Handling import com.azure.core.exception.HttpResponseException;
try {
client.sendEvent(event);
} catch (HttpResponseException e) {
System.out.println("Status: " + e.getResponse().getStatusCode());
System.out.println("Error: " + e.getMessage());
}
Environment Variables EVENT_GRID_TOPIC_ENDPOINT=https://<topic-name>.<region>.eventgrid.azure.net/api/events
EVENT_GRID_ACCESS_KEY=<your-access-key>
Best Practices
Batch Events : Send multiple events in one call when possible
Idempotency : Include unique event IDs for deduplication
Schema Validation : Use strongly-typed event data classes
Retry Logic : Built-in, but consider dead-letter for failures
Event Size : Keep events under 1MB (64KB for basic tier)
Trigger Phrases
"Event Grid Java"
"publish events Azure"
"CloudEvent SDK"
"event-driven messaging"
"pub/sub Azure"
"webhook events"
When to Use This skill is applicable to execute the workflow or actions described in the overview.