Exercício - Configurar aplicativos para enviar ou receber mensagens por meio de um hub de eventos

Concluído

Agora, está pronto para configurar as suas aplicações de publicador e de consumidor do hub de eventos.

Nesta unidade, você configura aplicativos para enviar ou receber mensagens por meio do hub de eventos. Um aplicativo atua como o remetente da mensagem (SimpleSend), o outro como o recetor da mensagem (EventProcessorSample). Como esses aplicativos são escritos em Java, você pode fazer todo o desenvolvimento, teste e gerenciamento em seu navegador. No entanto, a mesma configuração deve ser usada para cada plataforma, como .NET. Os aplicativos são armazenados em um repositório GitHub.

Criar uma conta de armazenamento padrão para fins gerais

O aplicativo recetor Java armazena mensagens no Armazenamento de Blobs do Azure, que requer uma conta de armazenamento. Para criar uma conta de armazenamento (V2 de uso geral), use o storage account create comando. Definimos os seguintes parâmetros para este comando:

Parâmetro Description
Nome (obrigatório) O nome da sua conta de armazenamento.
grupo de recursos (obrigatório) O proprietário do grupo de recursos é o grupo de recursos de área restrita, que já está definido como um valor padrão.
localização (opcional) A região já está definida como um valor padrão, mas você pode incluí-la se quiser definir uma região diferente do local padrão do grupo de recursos.
sku O valor de SKU padrão da conta de armazenamento é Standard_RAGRS. Mas, neste exercício, especificamos esse valor.

No exercício anterior, definimos valores padrão para grupo de recursos e local, para que possamos omitir esses parâmetros do comando.

  1. No Azure Cloud Shell, defina o nome da conta de armazenamento como uma variável. Um nome de conta de armazenamento deve ser exclusivo no Azure e deve conter de 3 a 24 números ou letras minúsculas.

    STORAGE_NAME=storagename$RANDOM
    
  2. Execute o seguinte comando para criar a conta de armazenamento.

    az storage account create --name $STORAGE_NAME --sku Standard_RAGRS --encryption-service blob
    

    Gorjeta

    Pode levar algum tempo para criar essa conta de armazenamento. Se a criação da conta de armazenamento falhar, altere a variável de ambiente e tente novamente.

  3. Execute o seguinte comando para obter as chaves de acesso associadas à sua conta de armazenamento.

    az storage account keys list --account-name $STORAGE_NAME
    
  4. Duas chaves associadas à sua conta de armazenamento são saídas no formato JSON. Copie e salve o valor de key1 para uso futuro. Você precisa dessa chave para acessar sua conta de armazenamento.

  5. Execute o seguinte comando para obter a cadeia de conexão para sua conta de armazenamento.

    az storage account show-connection-string -n $STORAGE_NAME
    
  6. A saída contém os detalhes da conexão para sua conta de armazenamento. Copie e guarde o valor da connectionString. Deve ter um aspeto semelhante a:

    "DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=storage_account_name;AccountKey=VZjXuMeuDqjCkT60xX6L5fmtXixYuY2wiPmsrXwYHIhwo736kSAUAj08XBockRZh7CZwYxuYBPe31hi8XfHlWw=="
    
  7. Execute o seguinte comando para criar um contêiner chamado mensagens em sua conta de armazenamento. Use o valor connectionString copiado na etapa anterior.

    az storage container create --name messages --connection-string "<connection string here>"
    

Clone os hubs de eventos repositório GitHub

No Cloud Shell, clone o repositório GitHub dos hubs de eventos com gito . Os arquivos de origem para os aplicativos que você cria nesta unidade estão localizados em um repositório GitHub.

  1. Execute os seguintes comandos para confirmar que está no diretório de raiz do Cloud Shell e, em seguida, clone este repositório.

    cd ~
    git clone https://github.com/Azure/azure-event-hubs.git
    

O repositório foi clonado para sua pasta raiz.

Editar SimpleSend.java

Neste exercício, você usa o editor interno do Cloud Shell para modificar o aplicativo SimpleSend. Você precisa adicionar seu namespace de Hubs de Eventos, nome do hub de eventos, nome da política de acesso compartilhado e chave primária.

  1. Navegue para a pasta SimpleSend.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend/src/main/java/com/microsoft/azure/eventhubs/samples/SimpleSend
    
  2. Abra o editor do Cloud Shell na pasta atual.

    code .
    

    Os arquivos na pasta atual são listados no menu à esquerda, e o espaço do editor no lado direito exibe o conteúdo do nome do arquivo listado na barra de título.

  3. Se ainda não estiver aberto, abra o SimpleSend.java selecionando-o na lista de arquivos.

  4. No editor, localize e substitua as seguintes cadeias de caracteres em 'ConnectionStringBuilder'':

    • "Your Event Hubs namespace name" pelo nome do espaço de nomes dos Hubs de Eventos.
    • "Your Event Hub" pelo nome do seu hub de eventos.
    • "Your policy name" pela RootManageSharedAccessKey.
    • "Your primary SAS key" pelo valor da chave primaryKey do seu espaço de nomes dos Hubs de Eventos que guardou anteriormente.

    Se você esquecer esses valores, você pode alternar para a janela do terminal abaixo do editor e executar o echo comando para listar as variáveis de ambiente. Por exemplo:

    echo $NS_NAME
    echo $HUB_NAME
    echo $STORAGE_NAME
    

    Para sua chave SAS primária, quando você cria um namespace de Hubs de Eventos, uma chave SAS de 256 bits chamada RootManageSharedAccessKey é criada e inclui chaves primárias e secundárias que concedem direitos de envio, escuta e gerenciamento para o namespace. No início deste exercício, você obteve a chave executando um comando da CLI do Azure; no entanto, você também pode encontrar as chaves e cadeias de conexão selecionando seu namespace de Hubs de Eventos no portal do Azure e, em seguida, no menu em Configurações, selecione Políticas de acesso compartilhado; agora selecione o nome da política RootManageSharedAccessKey para exibir as chaves da Política SAS.

  5. Salve o arquivo SimpleSend.java e feche o editor.

    Gorjeta

    Para salvar suas edições, use Ctrl+S. Saia do editor pressionando Ctrl+X no Windows e Linux ou Cmd+S no macOS. Ao contrário da janela do terminal do Cloud Shell, o editor do Cloud Shell usa as típicas teclas aceleradoras de teclado de copiar/colar para o seu sistema operacional. Como alternativa, abra o menu do editor selecionando as reticências (...) no canto superior direito para comandos de edição adicionais.

Utilizar o Maven para compilar SimpleSend.java

Agora, você constrói o aplicativo Java executando comandos mvn .

  1. No Cloud Shell, digite o seguinte comando para navegar até a pasta principal do SimpleSend .

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    
  2. Compile a aplicação SimpleSend do Java. Este comando cria seu aplicativo usando os detalhes de conexão para seu hub de eventos.

    mvn clean package -DskipTests
    

    O processo de compilação pode levar vários minutos para ser concluído. Verifique se vê a mensagem [INFORMAÇÕES DE] COMPILAÇÃO COM ÊXITO antes de continuar.

    Build results for sender application.

Editar EventProcessorSample.java

Agora você configura um aplicativo recetor (também conhecido como assinante ou consumidor) para ingerir dados do seu hub de eventos.

Para o aplicativo recetor, duas classes estão disponíveis: EventHubReceiver e EventProcessorHost. EventProcessorHost é construído sobre o EventHubReceiver, mas fornece uma interface programática mais simples do que o EventHubReceiver. O método EventProcessorHost pode distribuir automaticamente partições de mensagens por várias instâncias do EventProcessorHost com a mesma conta de armazenamento.

Neste procedimento, você usa o EventProcessorHost método. Edite o aplicativo EventProcessorSample para adicionar os seguintes valores: Seu namespace de Hubs de Eventos, nome do hub de eventos, nome da política de acesso compartilhado e chave primária, nome da conta de armazenamento, cadeia de conexão e nome do contêiner.

  1. Mude para a pasta EventProcessorSample executando o seguinte comando.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample/src/main/java/com/microsoft/azure/eventhubs/samples/eventprocessorsample
    
  2. Abra o editor do Cloud Shell.

    code .
    
  3. Selecione o ficheiro EventProcessorSample.java.

  4. Localize e substitua as seguintes cadeias de carateres no editor:

    • ----EventHubNamespaceName---- pelo nome do espaço de nomes dos Hubs de Eventos.
    • ----EventHubName---- pelo nome do seu hub de eventos.
    • ----SharedAccessSignatureKeyName---- pela RootManageSharedAccessKey.
    • ----SharedAccessSignatureKey---- pelo valor da chave primaryKey do seu espaço de nomes dos Hubs de Eventos que guardou anteriormente.
    • ----AzureStorageConnectionString---- pela cadeia de ligação da conta do armazenamento que guardou anteriormente.
    • ----StorageContainerName----pelas mensagens.
    • ----HostNamePrefix---- pelo nome da sua conta de armazenamento.
  5. Guarde EventProcessorSample.java com o menu "..." ou da tecla de atalho (Ctrl+S no Windows e Linux, Cmd+S no macOS).

  6. Feche o editor.

Utilizar Maven para compilar EventProcessorSample.java

  1. Mude para a pasta principal EventProcessorSample executando o seguinte comando.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    
  2. Construa o aplicativo Java SimpleSend executando o seguinte comando para garantir que seu aplicativo use os detalhes de conexão para seu hub de eventos.

    mvn clean package -DskipTests
    

    O processo de compilação pode levar vários minutos para ser concluído. Verifique se vê uma mensagem [INFORMAÇÕES DE] COMPILAÇÃO COM ÊXITO antes de continuar.

    Build results for receiver application.

Iniciar as aplicações remetente e recetora

  1. Execute o aplicativo Java a partir da linha de comando executando o seguinte java comando e especificando um pacote .jar. Execute os seguintes comandos para iniciar a aplicação SimpleSend.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    java -jar ./target/simplesend-1.0.0-jar-with-dependencies.jar
    
  2. Quando vir Envio Concluído..., prima Enter.

    jar-with-dependencies.jar
    SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
    SLF4J: Defaulting to no-operation (NOP) logger implementation
    SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
    2018-09-18T19:42:15.146Z: Send Complete...
    
  3. Inicie o aplicativo EventProcessorSample executando o seguinte comando.

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    java -jar ./target/eventprocessorsample-1.0.0-jar-with-dependencies.jar
    
  4. Quando as mensagens deixarem de aparecer na consola, prima Enter ou prima CTRL+C para terminar o programa.

    ...
    SAMPLE: Partition 0 checkpointing at 1064,19
    SAMPLE (3,1120,20): "Message 80"
    SAMPLE (3,1176,21): "Message 84"
    SAMPLE (3,1232,22): "Message 88"
    SAMPLE (3,1288,23): "Message 92"
    SAMPLE (3,1344,24): "Message 96"
    SAMPLE: Partition 3 checkpointing at 1344,24
    SAMPLE (2,1120,20): "Message 83"
    SAMPLE (2,1176,21): "Message 87"
    SAMPLE (2,1232,22): "Message 91"
    SAMPLE (2,1288,23): "Message 95"
    SAMPLE (2,1344,24): "Message 99"
    SAMPLE: Partition 2 checkpointing at 1344,24
    SAMPLE: Partition 1 batch size was 3 for host mystorageacct2018-46d60a17-7060-4b53-b0e0-cca70c970a47
    SAMPLE (0,1120,20): "Message 81"
    SAMPLE (0,1176,21): "Message 85"
    SAMPLE: Partition 0 batch size was 10 for host mystorageacct2018-46d60a17-7060-4b53-b0e0-cca70c970a47
    SAMPLE: Partition 0 got event batch
    SAMPLE (0,1232,22): "Message 89"
    SAMPLE (0,1288,23): "Message 93"
    SAMPLE (0,1344,24): "Message 97"
    SAMPLE: Partition 0 checkpointing at 1344,24
    SAMPLE: Partition 3 batch size was 8 for host mystorageacct2018-46d60a17-7060-4b53-b0e0-cca70c970a47
    SAMPLE: Partition 2 batch size was 9 for host mystorageacct2018-46d60a17-7060-4b53-b0e0-cca70c970a47
    SAMPLE: Partition 0 batch size was 3 for host mystorageacct2018-46d60a17-7060-4b53-b0e0-cca70c970a47
    

Resumo

Nesta unidade, você configurou um aplicativo remetente pronto para enviar mensagens para o hub de eventos. Você também configurou um aplicativo recetor pronto para receber mensagens do seu hub de eventos.