Alıştırma - Kuyruk iletisini işleme
Bu alıştırmada, uygulamanızı ileti kuyruğundaki bir iletide tetiklenebilen bir yol ile genişleteceksiniz.
Dekont
Bu alıştırmaya başlamadan önce Azurite uzantısını indirdiğinizden, Azure Depolama Gezgini indirdiğinizden ve Azure İşlevleri Core Tools'u indirdiğinizden emin olun.
Uygulamayı iskeleye ekle
Bu alıştırma için yeni bir Azure İşlevleri uygulamasıyla başlayacağız. Yeni bir dizin oluşturun ve kendinizi dizinine yerleştirin.
Komut Paleti Görüntüle'yi>seçin.
Azure İşlevleri: Yeni Proje Oluştur'u seçin.
Genellikle geçerli klasörünüz olan bir klasör seçin.
Dil seçin bölümünde Özel İşleyici'yi seçin.
İlk işleviniz için şablon seçin bölümünde HttpTrigger'ı seçin.
Uygulamaya queueTrigger gibi bir ad verin.
Anonim yetkilendirme düzeyini seçin. İsterseniz bunu daha sonra değiştirebilirsiniz.
Kökte server.go adlı bir dosya oluşturun. Projenizde artık aşağıdaki dosyalar olmalıdır:
queueTrigger/ function.json .funcignore .gitignore host.json local.settings.json proxies.json server.go
Dizinindeki function.json dosyasına
queueTrigger
gidin. öğesindeki ilk bağlama girdisinitype
bulun:{ "authLevel": "anonymous", "type": "httpTrigger", "direction": "in", "name": "req", "methods": [ "get", "post" ] }
Bu bağlama girdisini şu yapılandırmayla değiştirin:
{ "name": "queueItem", "type": "queueTrigger", "direction": "in", "queueName" : "items", "connection": "AzureWebJobsStorage" }
Bu adımda özelliğini ayarlarsınız
name
. Daha sonra kodda buna başvuracaksınız. Ayrıca tetikleyici türünüqueueTrigger
olarak değiştirerek kuyruk iletilerini dinlemeyi mümkün hale getirebilirsiniz.queueName
Değer belirli bir kuyruğu gösterir. Öykünücüyü daha sonra çalıştırdığınızda, böyle bir ada sahip bir kuyruk oluşturacaksınız.Son olarak local.settings.json dosyasında kuyruğa bağlantı dizesi içeren bir değişkeni işaret ettiniz.
Uygulamayı oluşturma
Bu noktada bir uygulama iskeleti elde etmiş olacaksınız. Artık gelen kuyruk iletilerini işleyebilen kod eklemeye hazırsınız.
server.go dosyasını açın ve aşağıdaki kodu ekleyin:
package main import ( "encoding/json", "fmt" "io/ioutil" "log" "net/http" "os" ) func queueHandler(w http.ResponseWriter, r *http.Request) { } func main() { customHandlerPort, exists := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT") if !exists { customHandlerPort = "8080" } mux := http.NewServeMux() mux.HandleFunc("/queueTrigger", queueHandler) fmt.Println("Go server Listening on: ", customHandlerPort) log.Fatal(http.ListenAndServe(":"+customHandlerPort, mux)) }
Artık konumunda ayarlanmış bir yolunuz
/queueTrigger
var.İçeri aktarma bölümünü bulun ve altına aşağıdaki yapıları ekleyin:
type InvokeRequest struct { Data map[string]json.RawMessage Metadata map[string]interface{} }
queueHandler()
yöntemini bulun ve aşağıdaki şekilde güncelleştirin:func queueHandler(w http.ResponseWriter, r *http.Request) { var invokeRequest InvokeRequest d := json.NewDecoder(r.Body) d.Decode(&invokeRequest) var parsedMessage string json.Unmarshal(invokeRequest.Data["queueItem"], &parsedMessage) }
Kod ilk olarak gelen yanıt akışından gövdeyi okur ve kodunu çözer:
var invokeRequest InvokeRequest d := json.NewDecoder(r.Body) d.Decode(&invokeRequest)
Ardından iletinin kendisi çağrısıyla
Unmarshal()
çıkarılır:var parsedMessage string json.Unmarshal(invokeRequest.Data["queueItem"], &parsedMessage)
Artık iletiyi edindiğinize göre, bunu yazdıralım.
Şu kodu ekleyin:
fmt.Println(parsedMessage) // your message
Kodunuzun tamamı artık yazılmıştır, ancak test edebilmeniz için projenizi yapılandırmanız gerekir.
host.json dosyasında öğesini bulun
defaultExecutablePath
ve değerini verin./server
.Dekont
Windows için değerini
.\server.exe
kullanırsınız.Proje kökünde çalıştırarak
go build
server.go dosyasını oluşturun:go build server.go
Ortamı yapılandırma
Sonraki adım ortamınızı yapılandırmaktır. Yerel olarak geliştirme yaptığınız için, öykünmüş bir ileti kuyruğuyla konuşabilmek için bunu ayarlamanız gerekir.
local.settings.json dosyasında adlı
AzureWebJobsStorage
bir öğeValues
bulun (veya eksikse ekleyin). değeriniUseDevelopmentStorage=true
verin. JSON girdiniz şu şekilde görünmelidir:"AzureWebJobsStorage" : "UseDevelopmentStorage=true"
Komut paletini açarak (Komut Paletini Görüntüle>) ve ardından Azurite: Kuyruk Hizmetini Başlat'ı seçerek Azurite uzantısını başlatın.
Dekont
Bu adım projenizde bazı yerel dosyalar oluşturur.
Azure Depolama Gezgini'i açın. Sol tarafta öykünücünün içeriği görünür.
Kuyruklar düğümüne sağ tıklayın ve yeni bir kuyruk oluşturma seçeneğini belirleyin. Ona ad öğelerini verin.
Dekont
Kuyruğa istediğiniz adı vekleyebilirsiniz. Ancak function.json dosyanızı yapılandırmak üzeresiniz. Buradaki kuyruğun adı ne olursa olsun function.json dosyasına girilmesi gerekir.
dizinin altında function.json dosyasını
queueTrigger
bulun. Dizinin aşağıdaki girdiye sahip olduğundanbindings
emin olun:{ "name": "queueItem", "type": "queueTrigger", "direction": "in", "queueName" : "items", "connection": "AzureWebJobsStorage" }
özelliği,
queueName
Azure Depolama Gezgini'de oluşturduğunuz kuyrukla aynı ada sahiptir. özelliği local.settings.jsonconnection
dosyasında ayarladığınız değeri gösterir.name
özelliği değerinequeueItem
sahiptir. Go kodunuz kuyruk iletisini ayrıştırmak için bu değeri kullanır.
Uygulamayı çalıştırma
Bu noktada her şey ayarlanır. Tek yapmanız gereken uygulamayı çalıştırmak, Azure Depolama Gezgini başlatmak ve bir kuyruk iletisi oluşturmaktır. Kodunuz bu iletiyi kullanabilmelidir.
Terminalden komutunu proje kökünde çalıştırın
func start
:func start
Visual Studio Code'da komut paletini açın ve Azurite: Kuyruk Hizmetini Başlat'ı çalıştırın.
Henüz başlatılmadıysa Azure Depolama Gezgini başlatın.
Azure Depolama Gezgini'da İleti Ekle'yi seçin:
Görüntülenen iletişim kutusuna ileti girin ve Tamam'ı seçin. Artık oluşturduğunuz iletinin ayrıntılarını görürsünüz.
Visual Studio Code'da işlevinizin artık çalışıyor olması gerekir. Terminalde, son satır olarak yazdırılan iletiyi görmeniz gerekir.
İşleviniz kuyruk iletisini kullanabildi ve içeriğini yazdı.
Tebrikler! Go'da bir kuyruk iletisinde tetikleyebilen bir Azure işlevi oluşturacaksınız. Ayrıca bu iletiyi ayrıştırmışsınız.
Gelen bir iletiyle ne yaptığınız size bağlı. Örneğin, bir veritabanında depolayabilir veya bir web isteğinde yük olarak gönderebilirsiniz.