Có nhiều cách để đăng ký một service với Consul như sử dụng một tập tin configuration, sử dụng Consul API, … Trong bài viết này, mình sẽ hướng dẫn các bạn cách sử dụng Consul API để đăng ký một service với Consul các bạn nhé!
Đầu tiên, mình sẽ tạo một service đơn giản với Spring Boot với Spring Web dependency:
expose 1 endpoint đơn giản là “/hello”:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
package com.huongdanjava.consul; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class ConsulServiceRegisterServiceExampleApplication { public static void main(String[] args) { SpringApplication.run(ConsulServiceRegisterServiceExampleApplication.class, args); } @GetMapping("/hello") public String hello() { return "Hello from Huong Dan Java"; } } |
Chạy ứng dụng Spring Boot này lên rồi request tới địa chỉ http://localhost:8080/hello, các bạn sẽ thấy kết quả như sau:
Bây giờ, chúng ta sẽ đăng ký service này với Consul các bạn nhé!
Để đăng ký một service với Consul, các bạn có thể sử dụng API Register Service tại https://developer.hashicorp.com/consul/api-docs/agent/service#register-service. Cơ bản thì các bạn có thể request với method PUT tới địa chỉ http://localhost:8500/v1/agent/service/register của Consul với data trong request body, cho ví dụ của mình, như sau:
1 2 3 4 5 |
{ "Name": "huongdanjava-service", "Address": "host.docker.internal", "Port": 8080 } |
- Name là tên của service
- Address là hostname của service. Ở đây, mình chạy Consul sử dụng Docker Compose và service của mình đang chạy ở máy host, nên như các bạn thấy, thông tin address sẽ là host.docker.internal.
- Port là port mà service đang chạy
Cho ví dụ của mình thì mình chỉ khai báo một số thông tin cơ bản như trên. Tuỳ trường hợp các bạn hãy xem thêm các request data mà Consul hỗ trợ trong link trên nhé!
Kết quả khi mình chạy request trên với Postman như sau:
Bây giờ, kiểm tra các service trong Consul UI, các bạn có thể thấy kết quả như sau:
Như vậy là chúng ta đã đăng ký thành công một service đơn giản với Consul API rồi đó các bạn!