Compartilhar via


EventHubConsumerClient Classe

  • java.lang.Object
    • com.azure.messaging.eventhubs.EventHubConsumerClient

Implementações

public class EventHubConsumerClient
implements Closeable

Um consumidor síncrono responsável pela leitura EventData de uma partição do Hub de Eventos no contexto de um grupo de consumidores específico.

A maioria das operações de recebimento contém um parâmetro maxWaitTime. O iterável é retornado quando maxWaitTime decorrido ou numberOfEvents recebido. É possível ter um iterável vazio se nenhum evento tiver sido recebido nesse período. receiveFromPartition(String partitionId, int maximumMessageCount, EventPosition startingPosition) não tem um parâmetro para maxWaitTime, consequentemente, pode levar muito tempo para retornar resultados se numberOfEvents for muito alto e houver tráfego baixo nesse Hub de Eventos.

Os exemplos mostrados neste documento usam um objeto de credencial chamado DefaultAzureCredential para autenticação, que é apropriado para a maioria dos cenários, incluindo ambientes locais de desenvolvimento e produção. Além disso, é recomendável usar a identidade gerenciada para autenticação em ambientes de produção. Você pode encontrar mais informações sobre diferentes maneiras de autenticação e seus tipos de credenciais correspondentes na documentação da Identidade do Azure".

Exemplo: criando um consumidor síncrono

O exemplo de código a seguir demonstra a criação do cliente EventHubConsumerClientsíncrono . O fullyQualifiedNamespace é o nome do host do Namespace dos Hubs de Eventos. Ele é listado no painel "Essentials" depois de navegar até o Namespace dos Hubs de Eventos por meio do Portal do Azure. O consumerGroup é encontrado navegando até a instância do Hub de Eventos e selecionando "Grupos de consumidores" no painel "Entidades". O consumerGroup(String consumerGroup) é necessário para criar clientes consumidores.

TokenCredential credential = new DefaultAzureCredentialBuilder().build();

 // "<<fully-qualified-namespace>>" will look similar to "{your-namespace}.servicebus.windows.net"
 // "<<event-hub-name>>" will be the name of the Event Hub instance you created inside the Event Hubs namespace.
 EventHubConsumerClient consumer = new EventHubClientBuilder()
     .credential("<<fully-qualified-namespace>>", "<<event-hub-name>>",
         credential)
     .consumerGroup(EventHubClientBuilder.DEFAULT_CONSUMER_GROUP_NAME)
     .buildConsumerClient();

Exemplo: consumindo eventos de uma única partição

Eventos de uma única partição podem ser consumidos usando receiveFromPartition(String partitionId, int maximumMessageCount, EventPosition startingPosition) ou receiveFromPartition(String partitionId, int maximumMessageCount, EventPosition startingPosition, Duration maximumWaitTime). A chamada para receiveFromPartition é concluída e retorna um IterableStream<T> quando o número máximo de eventos é recebido ou o tempo limite é decorrido. É possível ter um iterável vazio retornado se não houver eventos recebidos nessa duração.

TokenCredential credential = new DefaultAzureCredentialBuilder().build();

 // "<<fully-qualified-namespace>>" will look similar to "{your-namespace}.servicebus.windows.net"
 // "<<event-hub-name>>" will be the name of the Event Hub instance you created inside the Event Hubs namespace.
 EventHubConsumerClient consumer = new EventHubClientBuilder()
     .credential("<<fully-qualified-namespace>>", "<<event-hub-name>>",
         credential)
     .consumerGroup(EventHubClientBuilder.DEFAULT_CONSUMER_GROUP_NAME)
     .buildConsumerClient();

 Instant twelveHoursAgo = Instant.now().minus(Duration.ofHours(12));
 EventPosition startingPosition = EventPosition.fromEnqueuedTime(twelveHoursAgo);
 String partitionId = "0";

 // Reads events from partition '0' and returns the first 100 received or until the 30 seconds has elapsed.
 IterableStream<PartitionEvent> events = consumer.receiveFromPartition(partitionId, 100,
     startingPosition, Duration.ofSeconds(30));

 Long lastSequenceNumber = -1L;
 for (PartitionEvent partitionEvent : events) {
     // For each event, perform some sort of processing.
     System.out.print("Event received: " + partitionEvent.getData().getSequenceNumber());
     lastSequenceNumber = partitionEvent.getData().getSequenceNumber();
 }

 // Figure out what the next EventPosition to receive from is based on last event we processed in the stream.
 // If lastSequenceNumber is -1L, then we didn't see any events the first time we fetched events from the
 // partition.
 if (lastSequenceNumber != -1L) {
     EventPosition nextPosition = EventPosition.fromSequenceNumber(lastSequenceNumber, false);

     // Gets the next set of events from partition '0' to consume and process.
     IterableStream<PartitionEvent> nextEvents = consumer.receiveFromPartition(partitionId, 100,
         nextPosition, Duration.ofSeconds(30));
 }

Resumo do método

Modificador e tipo Método e descrição
void close()
String getConsumerGroup()

Obtém o grupo de consumidores do qual esse consumidor está lendo eventos como parte.

String getEventHubName()

Obtém o nome do Hub de Eventos com o qual esse cliente interage.

EventHubProperties getEventHubProperties()

Recupera informações sobre um Hub de Eventos, incluindo o número de partições presentes e seus identificadores.

String getFullyQualifiedNamespace()

Obtém o namespace dos Hubs de Eventos totalmente qualificado ao qual a conexão está associada.

String getIdentifier()

Obtém o identificador do cliente.

IterableStream<String> getPartitionIds()

Recupera os identificadores para as partições de um Hub de Eventos.

PartitionProperties getPartitionProperties(String partitionId)

Recupera informações sobre uma partição específica para um Hub de Eventos, incluindo elementos que descrevem os eventos disponíveis no fluxo de eventos de partição.

IterableStream<PartitionEvent> receiveFromPartition(String partitionId, int maximumMessageCount, EventPosition startingPosition)

Recebe um lote de PartitionEvent da partição do Hub de Eventos.

IterableStream<PartitionEvent> receiveFromPartition(String partitionId, int maximumMessageCount, EventPosition startingPosition, Duration maximumWaitTime)

Recebe um lote de PartitionEvent da partição do Hub de Eventos.

IterableStream<PartitionEvent> receiveFromPartition(String partitionId, int maximumMessageCount, EventPosition startingPosition, Duration maximumWaitTime, ReceiveOptions receiveOptions)

Recebe um lote de PartitionEvent da partição do Hub de Eventos.

Métodos herdados de java.lang.Object

Detalhes do método

close

public void close()

getConsumerGroup

public String getConsumerGroup()

Obtém o grupo de consumidores do qual esse consumidor está lendo eventos como parte.

Returns:

O grupo de consumidores do qual esse consumidor está lendo eventos como parte.

getEventHubName

public String getEventHubName()

Obtém o nome do Hub de Eventos com o qual esse cliente interage.

Returns:

O nome do Hub de Eventos com o qual esse cliente interage.

getEventHubProperties

public EventHubProperties getEventHubProperties()

Recupera informações sobre um Hub de Eventos, incluindo o número de partições presentes e seus identificadores.

Returns:

O conjunto de informações para o Hub de Eventos ao qual esse cliente está associado.

getFullyQualifiedNamespace

public String getFullyQualifiedNamespace()

Obtém o namespace dos Hubs de Eventos totalmente qualificado ao qual a conexão está associada. Isso provavelmente é semelhante a {yournamespace}.servicebus.windows.net.

Returns:

O namespace dos Hubs de Eventos totalmente qualificado ao qual a conexão está associada.

getIdentifier

public String getIdentifier()

Obtém o identificador do cliente.

Returns:

A cadeia de caracteres de identificador exclusivo para o cliente atual.

getPartitionIds

public IterableStream getPartitionIds()

Recupera os identificadores para as partições de um Hub de Eventos.

Returns:

O conjunto de identificadores para as partições de um Hub de Eventos.

getPartitionProperties

public PartitionProperties getPartitionProperties(String partitionId)

Recupera informações sobre uma partição específica para um Hub de Eventos, incluindo elementos que descrevem os eventos disponíveis no fluxo de eventos de partição.

Parameters:

partitionId - O identificador exclusivo de uma partição associada ao Hub de Eventos.

Returns:

O conjunto de informações para a partição solicitada no Hub de Eventos ao qual esse cliente está associado.

receiveFromPartition

public IterableStream receiveFromPartition(String partitionId, int maximumMessageCount, EventPosition startingPosition)

Recebe um lote de PartitionEvent da partição do Hub de Eventos.

Parameters:

partitionId - Identificador da partição da qual ler eventos.
maximumMessageCount - O número máximo de mensagens a serem recebidas neste lote.
startingPosition - Posicione dentro da partição do Hub de Eventos para começar a consumir eventos.

Returns:

Um conjunto disso PartitionEvent foi recebido. O iterável contém até maximumMessageCount eventos. Se um fluxo para os eventos tiver sido aberto antes, a mesma posição dentro dessa partição será retornada. Caso contrário, os eventos serão lidos a partir de startingPosition.

receiveFromPartition

public IterableStream receiveFromPartition(String partitionId, int maximumMessageCount, EventPosition startingPosition, Duration maximumWaitTime)

Recebe um lote de PartitionEvent da partição do Hub de Eventos.

Parameters:

partitionId - Identificador da partição da qual ler eventos.
maximumMessageCount - O número máximo de mensagens a serem recebidas neste lote.
startingPosition - Posicione dentro da partição do Hub de Eventos para começar a consumir eventos.
maximumWaitTime - O tempo máximo de espera para compilar a contagem de mensagens solicitadas para o lote; se não for especificado, o tempo de espera padrão especificado quando o consumidor foi criado será usado.

Returns:

Um conjunto disso PartitionEvent foi recebido. O iterável contém até maximumMessageCount eventos.

receiveFromPartition

public IterableStream receiveFromPartition(String partitionId, int maximumMessageCount, EventPosition startingPosition, Duration maximumWaitTime, ReceiveOptions receiveOptions)

Recebe um lote de PartitionEvent da partição do Hub de Eventos.

Parameters:

partitionId - Identificador da partição da qual ler eventos.
maximumMessageCount - O número máximo de mensagens a serem recebidas neste lote.
startingPosition - Posicione dentro da partição do Hub de Eventos para começar a consumir eventos.
maximumWaitTime - O tempo máximo de espera para compilar a contagem de mensagens solicitadas para o lote; se não for especificado, o tempo de espera padrão especificado quando o consumidor foi criado será usado.
receiveOptions - Opções ao receber eventos da partição.

Returns:

Um conjunto disso PartitionEvent foi recebido. O iterável contém até maximumMessageCount eventos.

Aplica-se a