Hubs de Eventos do Azure biblioteca de clientes do Repositório de Pontos de Verificação para Java – versão 1.0.0-beta.2
usando a Biblioteca de Clientes Jedis para Redis
Hubs de Eventos do Azure Repositório de Pontos de Verificação pode ser usado para armazenar pontos de verificação durante o processamento de eventos de Hubs de Eventos do Azure.
Esse pacote usa o Redis como um repositório persistente para manter pontos de verificação e informações de propriedade de partição.
O JedisRedisCheckpointStore
fornecido neste pacote pode ser conectado ao EventProcessorClient
.
Código-fonte| Documentação de referência da API | Documentação do produto | Exemplos
Introdução
Pré-requisitos
- Um Java Development Kit (JDK) versão 8 ou posterior.
- Maven
- Uma assinatura do Microsoft Azure
- Você pode criar uma conta gratuita em: https://azure.microsoft.com
- Hubs de Eventos do Azure instância
- Guia passo a passo para criar um Hub de Eventos usando o Portal do Azure
- Cache Redis do Azure ou um servidor Redis alternativo adequado
- Guia passo a passo para criar um Cache Redis usando o Portal do Azure
Incluir o pacote
Incluir o arquivo da BOM
Inclua o azure-sdk-bom em seu projeto para assumir a dependência da versão ga (disponibilidade geral) da biblioteca. No trecho a seguir, substitua o espaço reservado {bom_version_to_target} pelo número de versão. Para saber mais sobre a BOM, consulte o BOM README do SDK do 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>
e inclua a dependência direta na seção dependências sem a marca de versão, conforme mostrado abaixo.
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-messaging-eventhubs-checkpointstore-jedis</artifactId>
</dependency>
</dependencies>
Incluir dependência direta
Se você quiser assumir a dependência de uma versão específica da biblioteca que não está presente na BOM, adicione a dependência direta ao seu projeto da seguinte maneira.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-messaging-eventhubs-checkpointstore-jedis</artifactId>
<version>1.0.0-beta.2</version>
</dependency>
Autenticar o cliente de contêiner de armazenamento
Para criar uma instância do JedisCheckpointStore
, um JedisPool
objeto deve ser criado. Para tornar esse JedisPool
objeto, uma cadeia de caracteres de nome de host e uma cadeia de caracteres de chave primária são necessárias. Eles podem ser usados conforme mostrado abaixo para criar um JedisPool
objeto .
Principais conceitos
Os principais conceitos são explicados em detalhes aqui.
Exemplos
- Criar e executar uma instância do JedisRedisCheckpointStore
- Consumir eventos de todas as partições do Hub de Eventos
Criar uma instância de JedisPool
Para criar uma instância do JedisPool usando o Cache Redis do Azure, siga as instruções em Usar Cache do Azure para Redis em Java para buscar o nome do host e a chave de acesso. Caso contrário, use informações de conexão de uma instância do Redis em execução.
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();
Consumir eventos usando um cliente do processador de eventos
Para consumir eventos para todas as partições de um Hub de Eventos, você criará um EventProcessorClient
para um grupo de consumidores específico. Quando um Hub de Eventos é criado, ele fornece um grupo de consumidores padrão que pode ser usado para começar.
O EventProcessorClient
delegará o processamento de eventos a uma função de retorno de chamada que você fornecer, permitindo que você se concentre na lógica necessária para fornecer valor enquanto o processador é responsável por gerenciar as operações de consumidor subjacentes.
Em nosso exemplo, nos concentraremos na criação do EventProcessor
, usaremos o JedisRedisCheckpointStore
e uma função de retorno de chamada simples para processar os eventos recebidos dos Hubs de Eventos, gravar no console e atualizar o ponto de verificação no Armazenamento de Blobs após cada evento.
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();
Solução de problemas
Habilitar o log do cliente
O SDK do Azure para Java oferece uma história de log consistente para ajudar a solucionar problemas de erros do aplicativo e agilizar a resolução. Os logs produzidos capturam o fluxo de um aplicativo antes que acessem o estado do terminal para ajudar a localizar o problema raiz. Exiba o wiki de log para obter diretrizes sobre como habilitar o registro em log.
Próximas etapas
Comece explorando os exemplos aqui.
Participante
Se você quiser se tornar um contribuidor ativo para este projeto, consulte nossas Diretrizes de Contribuição para obter mais informações.
Azure SDK for Java