有人可以指导我使用批处理模式将事件发送到事件中心的参考实现。?
谢谢施里尼
假设您使用的是 Java,关键代码应如下所示:
public static void main(String[] args)
throws EventHubException, IOException {
final ConnectionStringBuilder connStr = new ConnectionStringBuilder()
.setNamespaceName("----ServiceBusNamespaceName-----") // to target National clouds - use .setEndpoint(URI)
.setEventHubName("----EventHubName-----")
.setSasKeyName("-----SharedAccessSignatureKeyName-----")
.setSasKey("---SharedAccessSignatureKey----");
final Gson gson = new GsonBuilder().create();
final ScheduledExecutorService executorService = Executors.newScheduledThreadPool(4);
final EventHubClient sender = EventHubClient.createFromConnectionStringSync(connStr.toString(), executorService);
try {
for (int batchNumber = 0; batchNumber < 10; batchNumber++) {
final EventDataBatch events = sender.createBatch();
EventData sendEvent;
// This do..while loop demonstrates - Maximizing batch size for every send call.
// sending multiple EventData's in one batch - guarantees order among the events sent in this batch
// and provides transactional semantics for the batch (all-or-none)
do {
final PayloadEvent payload = new PayloadEvent(100 + batchNumber);
final byte[] payloadBytes = gson.toJson(payload).getBytes(Charset.defaultCharset());
sendEvent = EventData.create(payloadBytes);
sendEvent.getProperties().put("from", "javaClient");
} while(events.tryAdd(sendEvent));
sender.sendSync(events);
System.out.println(String.format("Sent Batch - Batch Id: %s, Size: %s", batchNumber, events.getSize()));
}
} finally {
sender.closeSync();
executorService.shutdown();
}
}
java的批处理发送的完整示例代码在这里。