EventHubConsumerClient Classe
- java.
lang. Object - com.
azure. messaging. eventhubs. EventHubConsumerClient
- com.
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. |
Event |
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. |
Iterable |
getPartitionIds()
Recupera os identificadores para as partições de um Hub de Eventos. |
Partition |
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. |
Iterable |
receiveFromPartition(String partitionId, int maximumMessageCount, EventPosition startingPosition)
Recebe um lote de PartitionEvent da partição do Hub de Eventos. |
Iterable |
receiveFromPartition(String partitionId, int maximumMessageCount, EventPosition startingPosition, Duration maximumWaitTime)
Recebe um lote de PartitionEvent da partição do Hub de Eventos. |
Iterable |
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:
getEventHubName
public String getEventHubName()
Obtém o nome do Hub de Eventos com o qual esse cliente interage.
Returns:
getEventHubProperties
public EventHubProperties getEventHubProperties()
Recupera informações sobre um Hub de Eventos, incluindo o número de partições presentes e seus identificadores.
Returns:
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:
getIdentifier
public String getIdentifier()
Obtém o identificador do cliente.
Returns:
getPartitionIds
public IterableStream
Recupera os identificadores para as partições de um Hub de Eventos.
Returns:
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:
Returns:
receiveFromPartition
public IterableStream
Recebe um lote de PartitionEvent da partição do Hub de Eventos.
Parameters:
Returns:
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
Recebe um lote de PartitionEvent da partição do Hub de Eventos.
Parameters:
Returns:
maximumMessageCount
eventos.receiveFromPartition
public IterableStream
Recebe um lote de PartitionEvent da partição do Hub de Eventos.
Parameters:
Returns:
maximumMessageCount
eventos.Aplica-se a
Azure SDK for Java