Partilhar via


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

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 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 JedisRedisCheckpointStoree 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.