Implementasi Context Pada Golang

VANDY AHMAD MISRY AR RAZY
3 min readSep 25, 2022
Memahami Penggunaan 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

Struktur Folder

Langkah selanjut pada Folder server buat file main.go

main.go pada Folder server

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

main.go pada 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

Saya juga sedang mencari pekerjaan remote parttime maupun freelance jika perusahaan anda membutuhkan jasa saya bisa hubungi saya melalui wa 085156645724
Terimakasih

--

--