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). 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 um momento 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=xxxxxxxxxxx"
    
  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

Os arquivos de origem para os aplicativos que você cria nesta unidade estão localizados em um repositório GitHub.

  1. Inicie o GitBash no seu computador.

  2. Execute o seguinte comando para clonar a solução de projeto Git:

    cd ~
    git clone https://github.com/Azure/azure-event-hubs.git
    
  3. Inicie o VS Code no seu computador.

Editar SimpleSend.java que envia eventos para o hub de eventos

Neste exercício, você usa o Visual Studio Code (VS Code) 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. Inicie o VS Code.

  2. Selecione File ->Open Foldere selecione a pasta SimpleSend em c:/users/USERID/azure-event-hubs/samples/java/basic.

  3. No Explorador de Códigos no painel esquerdo, expanda src e, em seguida, clique duas vezes em SimpleSend.java para abri-lo no editor.

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

    • <EVENT HUBS NAMESPACE - CONNECTION STRING> com a cadeia de conexão para o seu namespace de Hubs de Eventos.
    • <EVENT HUB NAME> pelo nome do seu hub de eventos.

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

Utilizar o Maven para compilar SimpleSend.java

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

  1. No Explorador de Códigos, clique com o botão direito do rato SimpleSend.javae selecione Abrir no Terminal Integrado.

  2. Digite o seguinte comando para navegar até a pasta principal SimpleSend.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    
  3. 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.

    Crie resultados para o aplicativo remetente.

Editar o EventProcessorSample.java que recebe eventos para o processador de eventos

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 EventProcessorClient. EventProcessorClient é construído sobre o EventHubReceiver, mas fornece uma interface programática mais simples do que o EventHubReceiver. EventProcessorClient pode distribuir automaticamente partições de mensagem em várias instâncias de EventProcessorClient usando a mesma conta de armazenamento.

Neste procedimento, você usa o EventProcessorClient 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. Inicie outra instância do VS Code.

  2. Selecione File ->Open Foldere selecione a pasta EventProcessorSample em c:/users/USERID/azure-event-hubs/samples/java/basic.

  3. No Explorador de Códigos no painel esquerdo, expanda srce, em seguida, clique duas vezes em EventProcessorSample.java para abri-lo no editor.

  4. No editor, localize e substitua as seguintes cadeias de caracteres no editor:

    • <EVENT HUBS NAMESPACE - CONNECTION STRING> - cadeia de conexão para o namespace Event Hubs.
    • <EVENT HUB NAME> - nome do hub de eventos.
    • <AZURE STORAGE - CONNECTION STRING> - cadeia de conexão para a conta de Armazenamento do Azure.
    • Confirme se o nome do contêiner de blob está mensagens. Se você estiver usando um nome diferente para o contêiner, use esse nome.
  5. Guarde EventProcessorSample.java.

Utilizar Maven para compilar EventProcessorSample.java

  1. No Explorador de Códigos, clique com o botão direito do rato em EventProcessorSample.javae selecione Abrir no Terminal Integrado.

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

    cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
    
  3. 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.

    Compilar os resultados da aplicação recetora.

Iniciar as aplicações remetente e recetora

  1. 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
    
  2. Você deve ver a seguinte saída do aplicativo recetor:

    Starting event processor
    Press enter to stop.
    
  3. Mude para a janela VS Code que tem o código do aplicativo de envio (SimpleSend) aberto. No terminal integrado, execute o aplicativo Java a partir da linha de comando executando o seguinte comando java e especificando um pacote .jar.

    cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
    java -jar ./target/simplesend-1.0.0-jar-with-dependencies.jar
    
  4. Quando vir a mensagem Enviar Concluído..., Enter ou CTRL+C para parar a aplicação.

    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...
    
  5. No VS Code com o aplicativo recetor em execução, verifique se você vê as mensagens. Pressione Enter ou pressione CTRL+C para encerrar o programa.

    ...
    Starting event processor
    Press enter to stop.
    Processing event from partition 0 with sequence number 1 with body: Message 0
    Processing event from partition 0 with sequence number 2 with body: Message 1
    Processing event from partition 0 with sequence number 3 with body: Message 2
    Processing event from partition 0 with sequence number 4 with body: Message 3
    Processing event from partition 0 with sequence number 5 with body: Message 4
    

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.