Implementasi Context Pada Golang
Dalam sebuah aplikasi golang context sangat berguna untuk controlling, cancelation dan data sharing, dengan menggunakan cancelation kita dapat menghemat penggunaan memori pada service yang kita buat. Context sendiri merupakan sebuah data yang membawa value, sinyal cancel, sinyal timeout dan sinyal deadline
Context biasanya dibuat per request sehingga kita dapat mempermudah dalam meneruskan value, dan sinyal antar proses. Dalam arsitektur microservices satu service memanggil service lain merupakan hal yang wajar. Tapi kadang kita melupakan untuk handle pembatalan pada suatu proses di server jika request dibatalkan oleh client hal ini menyebabkan bisa saja kita menghabiskan resource server untuk hal yang sia sia karna sudah tidak valid
Pada artikel ini kita akan belajar implementasi context yang sederhana.
Kita akan membuat jika pada server membutuhkan waktu lebih dari 5 detik maka request akan tercancel dan mengembalikan message
Pertama buatlah project/folder dengan perintah go mod init belajar-context
Langkah selanjutnya buat folder baru dengan nama server dan client
Langkah selanjut pada Folder server buat file main.go
Code diatas merupakan simple code untuk http request, pada fungsi main kita deklarasikan endpoint root “/” memanggil fungsi Slow, lalu server dijalankan pada port 9999
Selanjutnya pada fungsi slow di line 17 kita buat context background, context background merupakan context kosong, selanjutnya pada line 23 jika request sudah 5 detik maka kita akan kembalikan “coba context” pada line 26 merupakan handle context cancelation, jika contextnya sudah di cancel maka kita akan munculkan error context cancelation, anda bisa menjalankan fungsi ini dengan masuk ke folder server kemudian ketikan perintah go run main.go
Selanjutnya kita buat main.go pada folter client
Berikutnya kita buat client sederhana yang akan memanggil fungsi pada server. pada line 17 kita buat context cancel dengan timeout 1 detik, selanjutnya pada line 19, requestnya kita tambahkan context dengan fungsi WithContext, setelah itu pada line 21 kita panggil server localhost:9999
selanjutnya anda bisa jalankan dengan masuk terlebih dahulu pada folder client kemudian ketik perintah go run main.go
Pada gambar diatas maka client akan langsung memotong koneksi jika server tidak meresponse jika lebih dari 1 detik
Sekian, Artikel terimakasih sudah membaca sampai sejauh ini, apabila terdapat ketidak sesuain anda bisa menghubungi saya melalui linkedin maupun whatapps, saya sangat senang apabila anda memberikan kritik maupun saran
Untuk pembahasan selanjutnya kamu dapat mengunjungi Arrazy Inovasi