Azure Event Hubs bibliothèque cliente Checkpoint Store pour Java - version 1.0.0-beta.2
utilisation de la bibliothèque cliente Jedis pour Redis
Azure Event Hubs magasin de points de contrôle peut être utilisé pour stocker des points de contrôle lors du traitement des événements de Azure Event Hubs.
Ce package utilise Redis comme magasin persistant pour la gestion des points de contrôle et des informations de propriété de partition.
Le JedisRedisCheckpointStore
fourni dans ce package peut être connecté à EventProcessorClient
.
Code source| Documentation de référence de l’API | Documentation du produit | Exemples
Prise en main
Prérequis
- Un Kit de développement Java (JDK), version 8 ou ultérieure.
- Maven
- Abonnement Microsoft Azure
- Vous pouvez créer un compte gratuit à l’adresse suivante : https://azure.microsoft.com
- Azure Event Hubs instance
- Guide pas à pas pour la création d’un Event Hub à l’aide du portail Azure
- Cache Redis Azure ou autre serveur Redis approprié
- Guide pas à pas pour la création d’un cache Redis à l’aide du portail Azure
Inclure le package
Inclure le fichier de nomenclature
Incluez le kit azure-sdk-bom à votre projet pour qu’il soit dépendant de la version disponibilité générale (GA) de la bibliothèque. Dans l’extrait de code suivant, remplacez l’espace réservé {bom_version_to_target} par le numéro de version. Pour en savoir plus sur la nomenclature, consultez LE FICHIER README DE NOMENCLATURE DU KIT DE DÉVELOPPEMENT LOGICIEL AZURE.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-sdk-bom</artifactId>
<version>{bom_version_to_target}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
puis incluez la dépendance directe dans la section dépendances sans la balise de version comme indiqué ci-dessous.
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-messaging-eventhubs-checkpointstore-jedis</artifactId>
</dependency>
</dependencies>
Inclure une dépendance directe
Si vous souhaitez prendre la dépendance sur une version particulière de la bibliothèque qui n’est pas présente dans la nomenclature, ajoutez la dépendance directe à votre projet comme suit.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-messaging-eventhubs-checkpointstore-jedis</artifactId>
<version>1.0.0-beta.2</version>
</dependency>
Authentifier le client de conteneur de stockage
Pour créer un instance de JedisCheckpointStore
, un JedisPool
objet doit être créé. Pour créer cet JedisPool
objet, un nom d’hôte String et une clé primaire String sont requis. Vous pouvez les utiliser comme indiqué ci-dessous pour créer un JedisPool
objet.
Concepts clés
Les concepts clés sont expliqués en détail ici.
Exemples
- Créer et exécuter un instance de JedisRedisCheckpointStore
- Consommer des événements à partir de toutes les partitions Event Hub
Créer un instance de JedisPool
Pour créer une instance de JedisPool à l’aide du cache Redis Azure, suivez les instructions de la section Utiliser Azure Cache pour Redis dans Java pour récupérer le nom d’hôte et la clé d’accès. Sinon, utilisez les informations de connexion d’un instance Redis en cours d’exécution.
JedisClientConfig clientConfig = DefaultJedisClientConfig.builder()
.password("<YOUR_REDIS_PRIMARY_ACCESS_KEY>")
.ssl(true)
.build();
String redisHostName = "<YOUR_REDIS_HOST_NAME>.redis.cache.windows.net";
HostAndPort hostAndPort = new HostAndPort(redisHostName, 6380);
JedisPool jedisPool = new JedisPool(hostAndPort, clientConfig);
// Do things with JedisPool.
// Finally, dispose of resource
jedisPool.close();
Consommer des événements à l’aide d’un client de processeur d’événements
Pour consommer des événements pour toutes les partitions d’un Event Hub, vous allez créer un EventProcessorClient
pour un groupe de consommateurs spécifique. Lorsqu’un Event Hub est créé, il fournit un groupe de consommateurs par défaut qui peut être utilisé pour commencer.
délègue EventProcessorClient
le traitement des événements à une fonction de rappel que vous fournissez, ce qui vous permet de vous concentrer sur la logique nécessaire pour fournir de la valeur tandis que le processeur est responsable de la gestion des opérations de consommation sous-jacentes.
Dans notre exemple, nous allons nous concentrer sur la création de EventProcessor
, utiliser la JedisRedisCheckpointStore
fonction de rappel simple et pour traiter les événements reçus à partir d’Event Hubs, écrire dans la console et mettre à jour le point de contrôle dans Stockage Blob après chaque événement.
JedisClientConfig clientConfig = DefaultJedisClientConfig.builder()
.password("<YOUR_REDIS_PRIMARY_ACCESS_KEY>")
.ssl(true)
.build();
String redisHostName = "<YOUR_REDIS_HOST_NAME>.redis.cache.windows.net";
HostAndPort hostAndPort = new HostAndPort(redisHostName, 6380);
JedisPool jedisPool = new JedisPool(hostAndPort, clientConfig);
EventProcessorClient eventProcessorClient = new EventProcessorClientBuilder()
.consumerGroup("<< CONSUMER GROUP NAME >>")
.connectionString("<< EVENT HUB NAMESPACE CONNECTION STRING >>")
.eventHubName("<< EVENT HUB NAME >>")
.checkpointStore(new JedisCheckpointStore(jedisPool))
.processEvent(eventContext -> {
System.out.println("Partition id = " + eventContext.getPartitionContext().getPartitionId() + " and "
+ "sequence number of event = " + eventContext.getEventData().getSequenceNumber());
})
.processError(context -> {
System.out.println("Error occurred while processing events " + context.getThrowable().getMessage());
})
.buildEventProcessorClient();
// This will start the processor. It will start processing events from all partitions.
eventProcessorClient.start();
// (for demo purposes only - adding sleep to wait for receiving events)
// Your application will probably keep the eventProcessorClient alive until the program ends.
TimeUnit.SECONDS.sleep(2);
// When the user wishes to stop processing events, they can call `stop()`.
eventProcessorClient.stop();
// Dispose of JedisPool resource.
jedisPool.close();
Dépannage
Activer la journalisation du client
Le Kit de développement logiciel (SDK) Azure pour Java offre une journalisation cohérente pour aider à résoudre les erreurs d’application et à accélérer leur résolution. Les journaux produits capturent le flux d’une application avant d’atteindre l’état terminal pour faciliter la localisation du problème racine. Consultez le wiki de journalisation pour obtenir des conseils sur l’activation de la journalisation.
Étapes suivantes
Commencez par explorer les exemples ici.
Contribution
Si vous souhaitez devenir un contributeur actif à ce projet, consultez nos Lignes directrices sur les contributions pour plus d’informations.
Azure SDK for Java