Hızlı Başlangıç: Azure CLI ve Event Grid ile özel olayları Azure Event Hubs'a yönlendirme
Azure Event Grid , olayları kullanarak uygulamaları tümleştirmek için kullanabileceğiniz yüksek oranda ölçeklenebilir ve sunucusuz bir olay aracısıdır. Event Grid desteklenen olay işleyicilerine olaylar sunar ve Azure Event Hubs bunlardan biridir. Bu makalede, aşağıdaki adımlar için Azure CLI'yi kullanacaksınız:
- Event Grid özel konusu oluşturun.
- Özel konu için bir Azure Event Hubs aboneliği oluşturun.
- Özel konuya örnek olaylar gönderin.
- Bu olayların olay hub'ına teslim edildiklerine emin olun.
Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.
Kaynak grubu oluşturma
Event Grid konuları Azure kaynaklarıdır ve bir Azure kaynak grubuna yerleştirilmelidir. Kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal koleksiyondur.
az group create komutuyla bir kaynak grubu oluşturun. Aşağıdaki örnek westus2 konumunda gridResourceGroup adlı bir kaynak grubu oluşturur.
Not
Sağ bölmede Cloud Shell'i başlatmak için CLI örneğinin yanındaki Deneyin'i seçin. Kopyala düğmesini seçerek komutu kopyalayın, Cloud Shell penceresine yapıştırın ve komutu çalıştırmak için ENTER tuşuna basın.
az group create --name gridResourceGroup --location westus2
Event Grid kaynak sağlayıcısını etkinleştirme
Daha önce Azure aboneliğinizde Event Grid kullanmadıysanız Event Grid kaynak sağlayıcısını kaydetmeniz gerekebilir. Sağlayıcıyı kaydetmek için şu komutu çalıştırın:
az provider register --namespace Microsoft.EventGrid
Kaydın tamamlanması biraz zaman alabilir. Durumu denetlemek için aşağıdaki komutu çalıştırın:
az provider show --namespace Microsoft.EventGrid --query "registrationState"
registrationState
Registered
olduğu zaman devam edebilirsiniz.
Özel konu oluşturma
Event Grid konusu, olaylarınızı gönderdiğiniz kullanıcı tanımlı bir uç nokta sağlar. Aşağıdaki örnekte özel konu, kaynak grubunuzda oluşturulur. <topic_name>
değerini özel konunuz için benzersiz bir adla değiştirin. Event Grid konu adı bir Etki Alanı Adı Sistemi (DNS) girdisi ile temsil edildiğinden benzersiz olmalıdır.
Konu için bir ad belirtin.
topicname="<TOPIC NAME>"
Konuyu oluşturmak için aşağıdaki komutu çalıştırın.
az eventgrid topic create --name $topicname -l westus2 -g gridResourceGroup
Olay hub’ı oluşturma
Özel konuya abone olmadan önce, olay iletisi için uç noktayı oluşturalım. Olayları toplamak için bir event hub oluşturun.
Event Hubs ad alanı için benzersiz bir ad belirtin.
namespace="<EVENT HUBS NAMESPACE NAME>"
Bir Event Hubs ad alanı ve bu ad alanında adlı
demohub
bir olay hub'ı oluşturmak için aşağıdaki komutları çalıştırın.hubname=demohub az eventhubs namespace create --name $namespace --resource-group gridResourceGroup az eventhubs eventhub create --name $hubname --namespace-name $namespace --resource-group gridResourceGroup
Özel konuya abone olma
Event Grid'e hangi olayları izlemek istediğinizi bildirmek için bir Event Grid konusuna abone olabilirsiniz. Aşağıdaki örnek, oluşturduğunuz özel konuya abone olup uç nokta için olay hub'ının kaynak kimliğini geçirir. Uç nokta şu biçimdedir:
/subscriptions/<AZURE SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP NAME>/providers/Microsoft.EventHub/namespaces/<NAMESPACE NAME>/eventhubs/<EVENT HUB NAME>
Aşağıdaki betik olay hub'ına ilişkin kaynak kimliğini alır ve bir Event Grid konusuna abone olur. Uç nokta türünü eventhub
olarak ayarlar ve uç nokta için event hub kimliğini kullanır.
hubid=$(az eventhubs eventhub show --name $hubname --namespace-name $namespace --resource-group gridResourceGroup --query id --output tsv)
topicid=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query id --output tsv)
az eventgrid event-subscription create \
--source-resource-id $topicid \
--name subtoeventhub \
--endpoint-type eventhub \
--endpoint $hubid
Olay aboneliğini oluşturan hesabın olay hub'ında yazma erişimine sahip olması gerekir.
Özel konunuza olay gönderme
Event Grid’in iletiyi uç noktanıza nasıl dağıttığını görmek için bir olay tetikleyelim. İlk olarak özel konunun URL’sini ve anahtarını alalım.
endpoint=$(az eventgrid topic show --name $topicname -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name $topicname -g gridResourceGroup --query "key1" --output tsv)
Bu makaleyi kolaylaştırmak için özel konuya göndereceğiniz örnek olay verileri sağlanmıştır. Normalde olay verilerini bir uygulama veya Azure hizmeti gönderir. CURL, HTTP istekleri gönderen bir yardımcı programdır. Bu makalede, özel konuya bir olay göndermek için CURL kullanın. Aşağıdaki örnek Event Grid konusuna üç olay gönderir:
for i in 1 2 3
do
event='[ {"id": "'"$RANDOM"'", "eventType": "recordInserted", "subject": "myapp/vehicles/motorcycles", "eventTime": "'`date +%Y-%m-%dT%H:%M:%S%z`'", "data":{ "make": "Ducati", "model": "Monster"},"dataVersion": "1.0"} ]'
curl -X POST -H "aeg-sas-key: $key" -d "$event" $endpoint
done
Azure portalında Event Hubs ad alanınızın Genel Bakış sayfasında Event Grid'in bu üç olayı olay hub'ına gönderdiğine dikkat edin. Event Hubs örneği sayfasının Genel Bakış sayfasında demohub
aynı grafiği görürsünüz.
Genellikle, event hub’dan olayları alan bir uygulama oluşturursunuz. Event hub’dan iletileri alan bir uygulama oluşturmak için bkz:
- .NET Standard’da Olay İşlemcisi Ana Bilgisayarı ile iletiler almaya başlama
- Java kullanarak Azure Event Hubs’dan olayları alma
- Apache Storm kullanarak Event Hubs’dan olayları alma
Kaynakları temizleme
Bu olayla çalışmaya devam etmeyi planlıyorsanız bu makalede oluşturulan kaynakları temizlemeyin. Aksi takdirde, bu makalede oluşturduğunuz kaynakları silmek için aşağıdaki komutu kullanın.
az group delete --name gridResourceGroup
Sonraki adımlar
Artık konu oluşturma ve olay aboneliklerini öğrendiğinize göre, Event Grid’in size nasıl yardımcı olabileceği konusunda daha fazla bilgi edinebilirsiniz:
- Event Grid Hakkında
- Blob depolama olaylarını bir özel web uç noktasına yönlendirme
- Azure Event Grid ve Logic Apps ile sanal makine değişikliklerini izleme
- Veri ambarına büyük veri akışı yapma
Event Grid'de olayları farklı programlama dilleri kullanarak yayımlama ve kullanma hakkında bilgi edinmek için aşağıdaki örneklere bakın.