Exercício - Configurar aplicativos para enviar ou receber mensagens por meio de um hub de eventos
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.
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
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.
Execute o seguinte comando para obter as chaves de acesso associadas à sua conta de armazenamento.
az storage account keys list --account-name $STORAGE_NAME
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.
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
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"
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.
Inicie o GitBash no seu computador.
Execute o seguinte comando para clonar a solução de projeto Git:
cd ~ git clone https://github.com/Azure/azure-event-hubs.git
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.
Inicie o VS Code.
Selecione File ->Open Foldere selecione a pasta SimpleSend em c:/users/USERID/azure-event-hubs/samples/java/basic.
No Explorador de Códigos no painel esquerdo, expanda src e, em seguida, clique duas vezes em SimpleSend.java para abri-lo no editor.
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.
-
Salve o arquivo SimpleSend.java.
Utilizar o Maven para compilar SimpleSend.java
Agora, você constrói o aplicativo Java executando comandos mvn .
No Explorador de Códigos, clique com o botão direito do rato SimpleSend.javae selecione Abrir no Terminal Integrado.
Digite o seguinte comando para navegar até a pasta principal SimpleSend.
cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
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.
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.
Inicie outra instância do VS Code.
Selecione File ->Open Foldere selecione a pasta EventProcessorSample em c:/users/USERID/azure-event-hubs/samples/java/basic.
No Explorador de Códigos no painel esquerdo, expanda srce, em seguida, clique duas vezes em EventProcessorSample.java para abri-lo no editor.
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.
-
Guarde EventProcessorSample.java.
Utilizar Maven para compilar EventProcessorSample.java
No Explorador de Códigos, clique com o botão direito do rato em EventProcessorSample.javae selecione Abrir no Terminal Integrado.
Mude para a pasta principal EventProcessorSample executando o seguinte comando.
cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
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.
Iniciar as aplicações remetente e recetora
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
Você deve ver a seguinte saída do aplicativo recetor:
Starting event processor Press enter to stop.
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
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...
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.