Azure Event Hub
Inleiding tot Azure Event Hubs
Azure Event Hubs is een volledig beheerde, real-time data-inname service die is ontworpen om miljoenen gebeurtenissen per seconde te streamen en te verwerken. Het wordt vaak gebruikt voor het verzamelen van log- en telemetriegegevens van verschillende bronnen zoals applicaties, apparaten en infrastructuur, en kan deze gegevens vervolgens doorsturen naar andere services voor opslag of verdere verwerking.
Event Hubs speelt een cruciale rol in big data architecturen door als een buffer en router te fungeren voor enorme hoeveelheden binnenkomende gegevens, waardoor analyses in real-time mogelijk zijn en vertragingen worden geminimaliseerd.
Belangrijkste functies van Event Hubs
Massale gegevensinname: Ondersteunt het streamen van miljoenen gebeurtenissen per seconde.
Real-time verwerking: Integreert naadloos met Azure Stream Analytics en Apache Kafka voor real-time data-analyse.
Betrouwbare gegevensopslag: Biedt robuuste replicatie en retentieopties om gegevens veilig te bewaren.
Flexibele schaalbaarheid: Schaal dynamisch op of af op basis van de hoeveelheid binnenkomende gegevens.
Beveiliging: Ondersteunt end-to-end versleuteling en integratie met Azure Active Directory (AAD) voor rolgebaseerde toegangscontrole.
Basisconcepten van Azure Event Hubs
Event Hub: Dit is de centrale entiteit in Event Hubs, waar gebeurtenissen naar worden verzonden. Het kan worden gezien als een “poort” die gebeurtenissen accepteert en distribueert.
Event Producer: Een applicatie of service die gegevens naar een Event Hub stuurt.
Partitions: Fysieke logische indelingen van de Event Hub, die zorgen voor parallelle verwerking van gegevens.
Event Consumer: Een applicatie die gebeurtenissen leest van een Event Hub, zoals een log-analyse systeem of een data pipeline.
Event Schema
Hieronder vindt u de structuur en de validatieregels voor een JSON-object dat een 'Event' representeert volgens de aangeleverde JSON-schema-definitie. Deze handleiding is bedoeld voor ontwikkelaars en system integrators die werken met de Event datastructuur binnen systemen die gebruikmaken van JSON voor data uitwisseling.
Schema Diagram
Schema Overzicht
Eigenschap | Type | Beschrijving | Vereisten |
---|---|---|---|
| Object | Bevat de aanvraaggegevens | Vereist |
| Integer | Unieke ID voor de aanvraag | 1000000000 - 9999999999 |
| Array | Lijst van aansluitingsobjecten | Unieke items, |
| Integer | Unieke ID voor het aansluitingsobject | 1000000000 - 9999999999 |
| Array | Unieke IDs voor de disciplines | 1000000000 - 9999999999 (array) |
| Array | IDs van bijlagen | 1000000000 - 9999999999 |
| String | Operatie die uitgevoerd moet worden | 4-64 alfanumerieke tekens of underscores, Vereist |
aanvraag
Object Structuur
Het aanvraag
object is het kernonderdeel van de Event
structuur.
aanvraagId
Type: Integer
Omschrijving: Een unieke identificatiecode voor de aanvraag.
Restricties: Moet een waarde hebben tussen 1.000.000.000 en 9.999.999.999.
aansluitingsObjecten
Array
Type: Array
Omschrijving: Een verzameling van objecten die de verschillende aansluitingsentiteiten beschrijven.
Structuur van objecten in aansluitingsObjecten
objectId
Type: Integer
Omschrijving: Unieke identificatiecode voor een aansluitingsobject.
Restricties: Waarde tussen 1.000.000.000 en 9.999.999.999.
disciplineIds
Type: Array
Omschrijving: Een lijst van unieke identificatiecodes voor de betrokken disciplines.
Restricties: Unieke items binnen de gespecificeerde numerieke grenzen.
bijlageIds
Array
Type: Array
Omschrijving: Een lijst van identificatiecodes voor bijlagen.
Restricties: Waarden tussen 1.000.000.000 en 9.999.999.999.
operation
String
Type: String
Omschrijving: De naam van de operatie die moet worden uitgevoerd.
Restricties: Moet voldoen aan de reguliere expressie die een patroon van 4 tot 64 alfanumerieke tekens of underscores specificeert.
Beschikbare operaties
AanvraagIngediend
- Deze operatie geeft aan dat de aanvraag succesvol is ingediend en klaar is om opgehaald te worden door de netbeheerder.Intake
- Deze operatie geeft aan dat er een intake vraag beschikbaar is voor de netbeheerder.OfferteUpdate
- Deze operatie geeft aan dat er een handmatige status update is voor een offerte (bv. aanvrager heeft offerte goedgekeurd/geweigerd).StatusGeannuleerd
- Deze operatie geeft aan dat er een status update is geweest met status 9.5StatusGeannuleerdBuitenLIP
- Deze operatie geeft aan dat er een status update is geweest met status 9.6
Voorbeelden
Voorbeeld 1: Alleen een aanvraagId
{
"aanvraag": {
"aanvraagId": 1000000001,
"aansluitingsObjecten": [],
"bijlageIds": []
},
"operation": "AanvraagIngediend"
}
Voorbeeld 2: Aansluitingsobjecten zonder disciplineIds
{
"aanvraag": {
"aanvraagId": 1000000002,
"aansluitingsObjecten": [
{
"objectId": 1000000001
},
{
"objectId": 1000000002
}
],
"bijlageIds": []
},
"operation": "Intake"
}
Voorbeeld 3: Met aansluitingsobjecten en disciplineIds
{
"aanvraag": {
"aanvraagId": 1000000003,
"aansluitingsObjecten": [
{
"objectId": 1000000003,
"disciplineIds": [1000000004, 1000000005]
},
{
"objectId": 1000000004,
"disciplineIds": [1000000006, 1000000007]
}
],
"bijlageIds": [1000000008, 1000000009]
},
"operation": "OfferteUpdate"
}
JSON Schema
{
"$id": "<https://example.com/person.schema.json>",
"$schema": "<https://json-schema.org/draft/2020-12/schema>",
"type": "object",
"description": "Event",
"additionalProperties": false,
"properties": {
"aanvraag": {
"type": "object",
"additionalProperties": false,
"properties": {
"aanvraagId": {
"type": "integer",
"minimum": 1000000000,
"maximum": 9999999999
},
"aansluitingsObjecten": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"objectId": {
"type": "integer",
"minimum": 1000000000,
"maximum": 9999999999
},
"disciplineIds": {
"type": "array",
"uniqueItems": true,
"items": {
"type": "integer",
"minimum": 1000000000,
"maximum": 9999999999
}
}
},
"required": [
"objectId"
]
}
},
"bijlageIds": {
"type": "array",
"items": {
"type": "integer",
"minimum": 1000000000,
"maximum": 9999999999
}
}
},
"required": [
"aanvraagId"
]
},
"operation": {
"type": "string",
"pattern" : "^[a-zA-Z_]{4,64}$"
}
},
"required": [
"aanvraag",
"operation"
]
}