Azure Event Hubs Client Package for C++

O Azure Event Hubs é uma plataforma de streaming de big data e serviço de ingestão de eventos da Microsoft. Para mais informações sobre os Centros de Eventos, veja: link.

Use a biblioteca github.com/Azure/azure-sdk-for-cpp/sdk/eventhubs cliente na sua candidatura para:

  • Envie eventos para um hub de eventos.
  • Consume eventos a partir de um centro de eventos.

Ligações principais:

Como Começar

Instale o pacote

Instale o pacote cliente Azure Event Hubs para C++ com vcpkg:

vcpkg install azure-messaging-eventhubs-cpp

Pré-requisitos

Crie um namespace usando o Azure CLI

Iniciar sessão na linha de código:

az login

Crie um grupo de recursos:

az group create --name <your group name> --location <your location> --subscription <your subscription>

Isto deverá gerar algo como:

{
  "id": "/subscriptions/<your subscription ID>/resourceGroups/<your group name>",
  "location": "<your location>",
  "managedBy": null,
  "name": "<yourgroup name>",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}

Crie um espaço de nomes EventHubs:

 az eventhubs namespace create --resource-group <your group name> --name <your namespace name> --sku Standard  --subscription <your subscription>

Isto deverá gerar algo como:

{
  "createdAt": "2023-08-10T18:41:54.19Z",
  "disableLocalAuth": false,
  "id": "/subscriptions/<your subscription ID>/resourceGroups/<your group name>/providers/Microsoft.EventHub/namespaces/<your namespace>",
  "isAutoInflateEnabled": false,
  "kafkaEnabled": true,
  "location": "West US",
  "maximumThroughputUnits": 0,
  "metricId": "REDACTED",
  "minimumTlsVersion": "1.2",
  "name": "<your namespace name>",
  "provisioningState": "Succeeded",
  "publicNetworkAccess": "Enabled",
  "resourceGroup": "<your resource group>",
  "serviceBusEndpoint": "https://<your namespace name>.servicebus.windows.net:443/",
  "sku": {
    "capacity": 1,
    "name": "Standard",
    "tier": "Standard"
  },
  "status": "Active",
  "tags": {},
  "type": "Microsoft.EventHub/Namespaces",
  "updatedAt": "2023-08-10T18:42:41.343Z",
  "zoneRedundant": false
}

Crie um EventHub:

az eventhubs eventhub create --resource-group <your resource group> --namespace-name <your namespace name> --name <your eventhub name>

Isso deverá produzir algo como:

{
  "createdAt": "2023-08-10T21:02:07.62Z",
  "id": "/subscriptions/<your subscription>/resourceGroups/<your group name>/providers/Microsoft.EventHub/namespaces/<your namespace name>/eventhubs/<your eventhub name>",
  "location": "westus",
  "messageRetentionInDays": 7,
  "name": "<your eventhub name>",
  "partitionCount": 4,
  "partitionIds": [
    "0",
    "1",
    "2",
    "3"
  ],
  "resourceGroup": "<your group name>",
  "retentionDescription": {
    "cleanupPolicy": "Delete",
    "retentionTimeInHours": 168
  },
  "status": "Active",
  "type": "Microsoft.EventHub/namespaces/eventhubs",
  "updatedAt": "2023-08-10T21:02:16.29Z"
}

Autenticar o cliente

Os clientes do Event Hub são criados usando uma credencial do pacote Azure Identity, como o DefaultAzureCredential. Alternativamente, pode criar um cliente usando uma cadeia de ligação.

Usando uma entidade de serviço

  • ConsumidorCliente: link
  • ProdutorCliente: link

Usando uma string de conexão

  • ConsumidorCliente: link
  • ProdutorCliente: link

Conceitos-chave

Um namespace de Hub de Eventos pode ter múltiplos hubs de eventos. Cada hub de eventos, por sua vez, contém partições que armazenam eventos.

Os eventos são publicados num centro de eventos através de um editor de eventos. Neste pacote, o editor do evento é o ProducerClient

Os eventos podem ser consumidos a partir de um hub de eventos através de um consumidor de eventos. Neste pacote existem dois tipos para consumir eventos:

  • O consumidor básico de eventos é o PartitionClient, no ConsumerClient. Este consumidor é útil se já souber de que partições quer receber.
  • Um consumidor distribuído de eventos, que utiliza Azure Blobs para checkpointing e coordenação. Isto é implementado no Processador. O Processador é útil quando se quer que a atribuição da partição seja escolhida dinamicamente e equilibrada com outras instâncias do Processador.

Mais informações sobre as funcionalidades e terminologia do Event Hubs podem ser encontradas aqui: link

Examples

Exemplos para vários cenários podem ser encontrados no azure.github.io ou no diretório de exemplos do nosso repositório GitHub para EventHubs.

Enviar eventos

O exemplo seguinte mostra como enviar eventos para um hub de eventos:

#include <azure/messaging/eventhubs.hpp>

// Your Event Hubs namespace connection string is available in the Azure portal.
std::string connectionString = "<connection_string>";
std::string eventHubName = "<event_hub_name>";

Azure::Messaging::EventHubs::EventDataBatchOptions batchOptions;
batchOptions.PartitionId = "1";
Azure::Messaging::EventHubs::EventDataBatch eventBatch(batchOptions);

Azure::Messaging::EventHubs::Models::EventData message;
message.Body.Data = {'H', 'e', 'l', 'l', 'o', '2'};

eventBatch.AddMessage(message);

Azure::Messaging::EventHubs::ProducerClientOptions producerOptions;
producerOptions.Name = "sender-link";
producerOptions.ApplicationID = "some";

auto client = Azure::Messaging::EventHubs::ProducerClient(
      connectionString, eventHubName, producerOptions);
auto result = client.SendEventDataBatch(eventBatch);

Receber eventos

O exemplo seguinte mostra como receber eventos da partição 1 num hub de eventos:

#include <azure/messaging/eventhubs.hpp>


// Your Event Hubs namespace connection string is available in the Azure portal.
std::string connectionString = "<connection_string>";
std::string eventHubName = "<event_hub_name>";

auto client = Azure::Messaging::EventHubs::ConsumerClient(
	connectionString, eventHubName);

Azure::Messaging::EventHubs::PartitionClient partitionClient
        = client.CreatePartitionClient("1");

auto events = partitionClient.ReceiveEvents(1);

Solução de problemas

Exploração Florestal

O cliente SDK EventHubs utiliza a funcionalidade de mensagens de registo do Azure SDK para permitir diagnósticos.

Contributing

Para mais detalhes sobre como contribuir para este repositório, consulte o guia de contribuições.

Este projeto acolhe contribuições e sugestões. A maioria das contribuições exige que você concorde com um Contrato de Licença de Colaborador (CLA) declarando que você tem o direito de, e realmente concede, os direitos de usar sua contribuição. Para mais detalhes, visite https://cla.microsoft.com.

Quando você envia uma solicitação pull, um CLA-bot determinará automaticamente se você precisa fornecer um CLA e decorar o PR adequadamente (por exemplo, rótulo, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios usando nosso CLA.

Este projeto adotou o Código de Conduta Open Source da Microsoft. Para obter mais informações, consulte o de perguntas frequentes sobre o Código de Conduta ou entre em contato com para obter perguntas ou comentários adicionais.

Muitas pessoas em todo o mundo ajudaram a tornar este projeto melhor. Vai querer espreitar:

Reportar problemas de segurança e bugs de segurança

Problemas de segurança e bugs devem ser reportados de forma privada, por email, ao Centro de Resposta de Segurança da Microsoft (MSRC secure@microsoft.com). Deverá receber uma resposta no prazo de 24 horas. Se, por algum motivo, não o fizer, por favor contacte-nos por e-mail para garantir que recebemos a sua mensagem original. Mais informações, incluindo a chave MSRC PGP, podem ser encontradas no Security TechCenter.

Licença

O Azure SDK para C++ está licenciado sob a licença MIT .