Exercício – Configurar aplicativos para enviar ou receber mensagens por meio de um hub de eventos
Agora você está pronto para configurar os aplicativos de publicador e de consumidor para o hub de eventos.
Nesta unidade, você configura os aplicativos para enviar ou receber mensagens através do hub de eventos. Um aplicativo funciona como o remetente da mensagem (SimpleSend) e o outro como receptor da mensagem (EventProcessorSample). Como esses aplicativos são escritos em Java, você pode realizar todo o desenvolvimento, teste e gerenciamento no seu navegador. No entanto, a mesma configuração precisa ser usada em todas as plataformas, como .NET. Os aplicativos são armazenados em um repositório GitHub.
Criar uma conta de armazenamento Standard de uso geral
O aplicativo receptor Java armazena mensagens no Armazenamento de Blobs do Azure, que requer uma conta de armazenamento. Para criar uma conta de armazenamento (uso geral V2), use o comando storage account create
. Definimos os seguintes parâmetros para esse comando:
Parâmetro | Descrição |
---|---|
nome (obrigatório) | Um nome para sua conta de armazenamento. |
resource-group (obrigatório) | O proprietário do grupo de recursos é o grupo de recursos da área restrita, que já está definido como um valor padrão. |
location (opcional) | A região já está definida como um valor padrão, mas você pode incluí-la se desejar definir uma região diferente da localização padrão do grupo de recursos. |
sku | O valor padrão da SKU da conta de armazenamento é Standard_RAGRS. Mas, neste exercício, especificamos esse valor. |
No exercício anterior, definimos os valores padrão do grupo de recursos e da localização, então podemos omitir esses parâmetros no comando.
No Azure Cloud Shell, defina o nome da conta de armazenamento como uma variável. Um nome da conta de armazenamento precisa ser exclusivo no Azure e precisa conter de 3 a 24 números ou letras minúsculas.
STORAGE_NAME=storagename$RANDOM
Execute o comando a seguir para criar a conta de armazenamento.
az storage account create --name $STORAGE_NAME --sku Standard_RAGRS --encryption-service blob
Dica
Pode levar alguns instantes 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
As duas chaves associadas à sua conta de armazenamento são geradas no formato JSON. Copie e salve o valor da key1 para uso futuro. Essa chave é necessária para acessar sua conta de armazenamento.
Execute o comando a seguir para obter a cadeia de conexão da sua conta de armazenamento.
az storage account show-connection-string -n $STORAGE_NAME
A saída contém os detalhes de conexão da sua conta de armazenamento. Copie e salve o valor de connectionString. Ele deverá ser semelhante a este:
"DefaultEndpointsProtocol=https;EndpointSuffix=core.windows.net;AccountName=storage_account_name;AccountKey=xxxxxxxxxxx"
Execute o comando a seguir para criar um contêiner chamado messages na sua conta de armazenamento. Use o valor connectionString copiado na etapa anterior.
az storage container create --name messages --connection-string "<connection string here>"
Clonar o repositório do GitHub dos hubs de eventos
No Cloud Shell, clone o repositório do GitHub dos hubs de eventos com git
. Os arquivos de origem dos aplicativos que você cria nesta unidade estão localizados em um repositório GitHub.
Use os comandos a seguir para verificar se você está no diretório base do Cloud Shell e clone o repositório abaixo.
cd ~ git clone https://github.com/Azure/azure-event-hubs.git
O repositório foi clonado para sua pasta base.
Editar o SimpleSend.java
Neste exercício, use o editor interno do Cloud Shell para modificar o aplicativo SimpleSend. É necessário adicionar o namespace do Hubs de Eventos do Azure, o nome do hub de eventos, o nome da política de acesso compartilhado e a chave primária.
Mude para a pasta SimpleSend.
cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend/src/main/java/com/microsoft/azure/eventhubs/samples/SimpleSend
Abra o editor do Cloud Shell na pasta atual.
code .
Os arquivos na pasta atual estã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.
Se ainda não estiver aberto, abra SimpleSend.java selecionando-o na lista de arquivos.
No editor, localize e substitua as seguintes cadeias de caracteres em `ConnectionStringBuilder``:
"Your Event Hubs namespace name"
pelo nome do namespace dos Hubs de Eventos."Your Event Hub"
pelo nome do hub de eventos."Your policy name"
por RootManageSharedAccessKey."Your primary SAS key"
pelo valor da chave primaryKey do namespace dos Hubs de Eventos salvo anteriormente.
Se você esquecer esses valores, poderá alternar para a janela do terminal abaixo do editor e executar o comando
echo
para listar as variáveis de ambiente. Por exemplo:echo $NS_NAME echo $HUB_NAME echo $STORAGE_NAME
Na sua chave SAS primária, quando você cria um namespace dos Hubs de Eventos, uma chave SAS de 256 bits chamada RootManageSharedAccessKey é criada e inclui as chaves primárias e secundárias que concedem direitos de envio, escuta e gerenciamento ao namespace. Anteriormente neste exercício, você obteve a chave executando um comando da CLI do Azure. No entanto, você também pode encontrar as chaves e as cadeias de conexão selecionando o namespace dos Hubs de Eventos no portal do Azure e, no menu em Configurações, selecione Políticas de acesso compartilhado e o nome da política RootManageSharedAccessKey para exibir as chaves da Política de SAS.
Salve o arquivo SimpleSend.java e feche o editor. Selecione no canto superior direito do editor e use os itens de menu Salvar e Fechar Editor.
Usar o Maven para criar o SimpleSend.java
Agora, crie o aplicativo Java para executar os comandos mvn.
No Cloud Shell, insira o comando a seguir para navegar até a pasta SimpleSend principal.
cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend
Crie o aplicativo Java SimpleSend. Esse comando cria seu aplicativo usando os detalhes de conexão do hub de eventos.
mvn clean package -DskipTests
O processo de criação pode levar vários minutos para ser concluído. Verifique se você vê a mensagem [INFO] BUILD SUCCESS antes de continuar.
Editar o EventProcessorSample.java
Agora configure um aplicativo receptor (também conhecido como assinante ou consumidor) para ingerir os dados do seu hub de eventos.
Duas classes estão disponíveis para o aplicativo receptor: O EventHubReceiver e o EventProcessorHost. O EventProcessorHost baseia-se em EventHubReceiver, mas fornece uma interface programática mais simples que EventHubReceiver. EventProcessorHost pode distribuir automaticamente as partições de mensagem em várias instâncias de EventProcessorHost usando a mesma conta de armazenamento.
Nesse procedimento, use o método EventProcessorHost
. Edite o aplicativo EventProcessorSample para adicionar os seguintes valores: Seu namespace dos Hubs de Eventos do Azure, o nome do hub de eventos, o nome e a chave primária da política de acesso compartilhado, o nome da conta de armazenamento, a cadeia de conexão e o nome do contêiner.
Migre para a pasta EventProcessorSample executando o comando a seguir.
cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample/src/main/java/com/microsoft/azure/eventhubs/samples/eventprocessorsample
Abra o editor do Cloud Shell.
code .
Selecione o arquivo EventProcessorSample.java no explorador de arquivos à esquerda.
Localize e substitua as cadeias de caracteres a seguir no editor:
----EventHubNamespaceName----
pelo nome do namespace dos Hubs de Eventos.----EventHubName----
pelo nome do hub de eventos.----SharedAccessSignatureKeyName----
por RootManageSharedAccessKey.----SharedAccessSignatureKey----
pelo valor da chave primaryKey do namespace dos Hubs de Eventos salvo anteriormente.----AzureStorageConnectionString----
pela cadeia de conexão da conta de armazenamento salva anteriormente.----StorageContainerName----
por messages.----HostNamePrefix----
pelo nome da sua conta de armazenamento.
Se você esquecer esses valores, poderá alternar para a janela do terminal abaixo do editor e executar o comando
echo
para listar as variáveis de ambiente. Por exemplo:echo $NS_NAME echo $HUB_NAME echo $STORAGE_NAME
Salve o EventProcessorSample.java usando o menu "..." ou uma combinação de teclas (Ctrl+S no Windows e no Linux e Cmd+S no macOS).
Feche o editor.
Usar o Maven para criar o EventProcessorSample.java
Migre para a pasta principal do EventProcessorSample executando o comando a seguir.
cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample
Crie o aplicativo SimpleSend para Java executando o comando a seguir para garantir que seu aplicativo usa os detalhes de conexão do hub de eventos.
mvn clean package -DskipTests
O processo de criação pode levar vários minutos para ser concluído. Verifique se uma mensagem [INFO] BUILD SUCCESS é exibida antes de continuar.
Iniciar os aplicativos de remetente e destinatário
Execute o aplicativo Java a partir da linha de comando, executando o seguinte comando
java
e especificando um pacote .jar. Execute os comandos a seguir para iniciar o aplicativo SimpleSend.cd ~/azure-event-hubs/samples/Java/Basic/SimpleSend java -jar ./target/simplesend-1.0.0-jar-with-dependencies.jar
Ao ver a mensagem Envio Concluído..., pressione 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...
Inicie o aplicativo EventProcessorSample executando o comando a seguir.
cd ~/azure-event-hubs/samples/Java/Basic/EventProcessorSample java -jar ./target/eventprocessorsample-1.0.0-jar-with-dependencies.jar
Quando as mensagens deixarem de aparecer no console, pressione Enter ou CTRL+C para encerrar 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 ao seu hub de eventos. Você também configurou um aplicativo receptor pronto para receber mensagens do seu hub de eventos.