spring boot + Consul 示例 (Kotlin版)

这篇具有很好参考价值的文章主要介绍了spring boot + Consul 示例 (Kotlin版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.docker 安装consul

docker-compose.yaml

version: "3"

services:
  consul:
    image: consul:1.4.4
    container_name: consul
    environment:
      - CONSUL_BIND_INTERFACE=eth0
    ports:
      - "8500:8500"

这里使用的是consul的1.4.4版本的image,可以根据需要更换不同的版本。
在docker-compose.yaml文件所在路劲执行如下指令后

docker-compose up -d

查看当前容器运行情况

CONTAINER ID   IMAGE          COMMAND                  CREATED      STATUS       PORTS                                                                      NAMES
417107b6159c   consul:1.4.4   "docker-entrypoint.s…"   6 days ago   Up 2 hours   8300-8302/tcp, 8301-8302/udp, 8600/tcp, 8600/udp, 0.0.0.0:8500->8500/tcp   consul

此时,可以访问consul的dashboard界面
localhost:500
spring boot + Consul 示例 (Kotlin版),kotlin,spring-cloud,spring boot,consul

2.创建基于springboot的client

上述docker安装的consul server作为服务发现中心,此时创建client并注册到注册中心。

2.1 依赖版本

name version
spring-boot 2.7.15
spring-cloud 2021.0.8
JAVA 11
Kotlin 1.6
Maven 3.9

2.2 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.15</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>sb-consul</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>sb-consul</name>
    <description>sb-consul</description>
    <properties>
        <java.version>11</java.version>
        <kotlin.version>1.6.21</kotlin.version>
        <spring-cloud.version>2021.0.8</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-kotlin</artifactId>
        </dependency>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-reflect</artifactId>
        </dependency>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-stdlib-jdk8</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
        <testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-maven-plugin</artifactId>
                <configuration>
                    <args>
                        <arg>-Xjsr305=strict</arg>
                    </args>
                    <compilerPlugins>
                        <plugin>spring</plugin>
                    </compilerPlugins>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.jetbrains.kotlin</groupId>
                        <artifactId>kotlin-maven-allopen</artifactId>
                        <version>${kotlin.version}</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>
    </build>

</project>

注意: 这里重要的有两个依赖,分别是:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

这个用来注册到consul的注册中心

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

这个是用来做健康检测的,不加的话,请求接口HTTP GET http://192.168.19.123:10086/actuator/health会失败,认为服务不健康。(这里我理解为服务不健康,就不可以对外提供服务,但是我本地起了两个一样的服务,一个是通过健康检测的,一个没有,但是都可以访问到。不知道为什么。。)

2.3 启动类


import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.cloud.client.discovery.EnableDiscoveryClient

@SpringBootApplication
@EnableDiscoveryClient
class SbConsulApplication

fun main(args: Array<String>) {
    runApplication<SbConsulApplication>(*args)
}

注意添加注解@EnableDiscoveryClient,不过是使用Eureka还是Consul这种注册中心,都需要指明服务发现的client。

2.4 application.properties

spring.application.name=YYtest
server.port=10086

spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
spring.cloud.consul.discovery.serviceName=${spring.application.name}

这里主要就是指明服务发现的配置内容,即Consul server的地址。

3 搭建完成

这个时候,再访问Consul的dashboard界面,可以看到服务已经注册成功。
spring boot + Consul 示例 (Kotlin版),kotlin,spring-cloud,spring boot,consul
点击我们的服务YYtest 服务
spring boot + Consul 示例 (Kotlin版),kotlin,spring-cloud,spring boot,consul
spring boot + Consul 示例 (Kotlin版),kotlin,spring-cloud,spring boot,consul

4. 总结

先感受了一下Consul,又好像什么都没感受一样。继续深入学习。。。文章来源地址https://www.toymoban.com/news/detail-696162.html

到了这里,关于spring boot + Consul 示例 (Kotlin版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Springboot 实践(10)spring cloud 与consul配置运用之服务的注册与发现

            前文讲解,完成了springboot、spring security、Oauth2.0的继承,实现了对系统资源的安全授权、允许获得授权的用户访问,也就是实现了单一系统的全部技术开发内容。         Springboot是微服务框架,单一系统只能完成指定系统的功能;那么多个单一系统是如何实现

    2024年02月12日
    浏览(42)
  • spring boot 服务健康检测返回OUT_OF_SERVICE,导致服务无法成功注册到consul

    健康检测接口返回OUT_OF_SERVICE 从日志启动看,没有任何报错信息;而且jvm进程也启动成功。 关键的一点信息是,服务的swagger地址访问也正常。 但是,consul上的服务状态就是不健康。 当然,重启大法不好使。 增加配置项: management.endpoint.health.show-details: always 可以看出,ela

    2024年02月14日
    浏览(41)
  • Docker Consul详解与部署示例

      目录 Consul构成 Docker Consul 概述 Raft算法 服务注册与发现 健康检查 Key/Value存储 多数据中心 部署模式 consul-template守护进程 registrator容器 consul服务部署(192.168.41.31) 环境准备 搭建Consul服务 查看集群信息 registrator服务部署(192.168.41.32) 安装 Gliderlabs/Registrator: 测试服务发现

    2024年01月17日
    浏览(36)
  • Spring Boot进阶(79):使用Kotlin轻松打造高效的Spring Boot应用

            随着Java开发语言的发展,很多新的编程语言不断涌现,其中Kotlin备受开发者青睐,它是一种相对新的基于JVM的静态语言,支持Java虚拟机(JVM)和Android开发。Kotlin将Java语言中的一些缺点进行了优化,并增加了很多新的特性,因此在开发效率和代码可读性上具有很

    2024年02月08日
    浏览(49)
  • 聊聊spring-cloud的负载均衡

    在微服务架构中,负载均衡是非常重要的一个环节,可以有效地提高系统的可用性和稳定性。在Spring Cloud中,提供了多种负载均衡组件和算法,本文将详细介绍如何减少负载均衡对系统性能的影响。 在选择负载均衡算法时,需要根据实际情况进行选择。常用的负载均衡算法有

    2024年02月16日
    浏览(31)
  • idea快速搭建一个spring-cloud

    1、创建一个空的maven项目! 2、创建一个注册中心模块 3、配置注册中心 配置文件改用yml,配置如下: 注意pom文件中springcloud与springboot的版本对应问题 启动成功后,访问本地+端口即可看到注册中心页面,说明成功啦!

    2024年02月01日
    浏览(52)
  • spring-cloud依赖下载失败踩坑

    问题:could not find artifact org.springfarmework.cloud:spring-cloud-dependencies:pom:Hoxton.SR10 in alimaven (http://maven.aliyun.com/nexus/content/groups/public) 1在maven的conf文件夹中settings文件中配置阿里云镜像 2在pom文件中加入以下代码

    2024年02月15日
    浏览(32)
  • Spring Cloud + Spring Boot 项目搭建结构层次示例讲解

    以下是我搭建Spring cloud项目架构的经验,我将以图片的形式和大家进行分享;至于Spring Boot的搭建经验,我会在图后以文字描述的方式和大家分享,请往下看: Spring Boot的搭建经验,我会以文字描述的方式和大家分享,请往下看: Controller 层 :Controller 层负责处理客户端的请

    2024年02月11日
    浏览(49)
  • Spring-Cloud中服务发现是什么?干什么的?怎么用?

    Spring Cloud 通过 Eureka 或 Consul 等服务注册与发现组件来实现微服务间的相互感知。服务提供者将自己的服务信息注册到注册中心,服务消费者从注册中心获取服务提供者的信息,从而进行服务调用。 在 Spring Cloud 中,服务发现是一种机制,用于 自动检测 和定位分布式系统中的

    2024年03月09日
    浏览(60)
  • Spring Boot集成ShardingSphere分片利器 AutoTable (二)—— 自动分片算法示例 | Spring Cloud 46

    在前面我们通过以下章节对 ShardingSphere 的 AutoTable 有了基础的了解: Spring Boot集成ShardingSphere分片利器 AutoTable (一)—— 简单体验 | Spring Cloud 45 书接上回,本章进行对 AutoTable 支持的自动分片算法进行逐一示例说明。 示例采用 springboot 集成 shardingsphere-jdbc 方式搭建。 shadi

    2024年02月10日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包