在SpringBoot中使用nacos一定要注意name
,使用openfeign
特别要注意这个点。
1 2 3 | spring: application: name: item-service |
需要的依赖包
- config需要引入的包
1 | com.alibaba.cloudspring-cloud-starter-alibaba-nacos-config |
- discovery需要引入的包
1 | com.alibaba.cloudspring-cloud-starter-alibaba-nacos-discovery |
- bootstrap需要引入的包
1 | org.springframework.cloudspring-cloud-starter-bootstrap |
- 配置openfeign需要引入的包
1 | org.springframework.cloudspring-cloud-starter-openfeign |
- openfeign负载均衡
1 | org.springframework.cloudspring-cloud-starter-loadbalancer |
- openfeign连接池
1 | io.github.openfeignfeign-okhttp |
安装nacos
创建nacos数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 | -- -------------------------------------------------------- -- 主机: 192.168.150.101 -- 服务器版本: 8.0.27 - MySQL Community Server - GPL -- 服务器操作系统: Linux -- HeidiSQL 版本: 12.2.0.6576 -- -------------------------------------------------------- /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */ ; /*!40101 SET NAMES utf8 */ ; /*!50503 SET NAMES utf8mb4 */ ; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */ ; /*!40103 SET TIME_ZONE='+00:00' */ ; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */ ; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */ ; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */ ; -- 导出 nacos 的数据库结构 DROP DATABASE IF EXISTS `nacos`; CREATE DATABASE IF NOT EXISTS `nacos` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ ; USE `nacos`; -- 导出 表 nacos.config_info 结构 DROP TABLE IF EXISTS `config_info`; CREATE TABLE IF NOT EXISTS `config_info` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id' , `data_id` varchar (255) COLLATE utf8_bin NOT NULL COMMENT 'data_id' , `group_id` varchar (128) COLLATE utf8_bin DEFAULT NULL , `content` longtext COLLATE utf8_bin NOT NULL COMMENT 'content' , `md5` varchar (32) COLLATE utf8_bin DEFAULT NULL COMMENT 'md5' , `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' , `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间' , `src_user` text COLLATE utf8_bin COMMENT 'source user' , `src_ip` varchar (50) COLLATE utf8_bin DEFAULT NULL COMMENT 'source ip' , `app_name` varchar (128) COLLATE utf8_bin DEFAULT NULL , `tenant_id` varchar (128) COLLATE utf8_bin DEFAULT '' COMMENT '租户字段' , `c_desc` varchar (256) COLLATE utf8_bin DEFAULT NULL , `c_use` varchar (64) COLLATE utf8_bin DEFAULT NULL , `effect` varchar (64) COLLATE utf8_bin DEFAULT NULL , `type` varchar (64) COLLATE utf8_bin DEFAULT NULL , `c_schema` text COLLATE utf8_bin, `encrypted_data_key` text COLLATE utf8_bin NOT NULL COMMENT '秘钥' , PRIMARY KEY (`id`), UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE =utf8_bin COMMENT= 'config_info' ; -- 正在导出表 nacos.config_info 的数据:~0 rows (大约) DELETE FROM `config_info`; -- 导出 表 nacos.config_info_aggr 结构 DROP TABLE IF EXISTS `config_info_aggr`; CREATE TABLE IF NOT EXISTS `config_info_aggr` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id' , `data_id` varchar (255) COLLATE utf8_bin NOT NULL COMMENT 'data_id' , `group_id` varchar (128) COLLATE utf8_bin NOT NULL COMMENT 'group_id' , `datum_id` varchar (255) COLLATE utf8_bin NOT NULL COMMENT 'datum_id' , `content` longtext COLLATE utf8_bin NOT NULL COMMENT '内容' , `gmt_modified` datetime NOT NULL COMMENT '修改时间' , `app_name` varchar (128) COLLATE utf8_bin DEFAULT NULL , `tenant_id` varchar (128) COLLATE utf8_bin DEFAULT '' COMMENT '租户字段' , PRIMARY KEY (`id`), UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE =utf8_bin COMMENT= '增加租户字段' ; -- 正在导出表 nacos.config_info_aggr 的数据:~0 rows (大约) DELETE FROM `config_info_aggr`; -- 导出 表 nacos.config_info_beta 结构 DROP TABLE IF EXISTS `config_info_beta`; CREATE TABLE IF NOT EXISTS `config_info_beta` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id' , `data_id` varchar (255) COLLATE utf8_bin NOT NULL COMMENT 'data_id' , `group_id` varchar (128) COLLATE utf8_bin NOT NULL COMMENT 'group_id' , `app_name` varchar (128) COLLATE utf8_bin DEFAULT NULL COMMENT 'app_name' , `content` longtext COLLATE utf8_bin NOT NULL COMMENT 'content' , `beta_ips` varchar (1024) COLLATE utf8_bin DEFAULT NULL COMMENT 'betaIps' , `md5` varchar (32) COLLATE utf8_bin DEFAULT NULL COMMENT 'md5' , `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' , `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间' , `src_user` text COLLATE utf8_bin COMMENT 'source user' , `src_ip` varchar (50) COLLATE utf8_bin DEFAULT NULL COMMENT 'source ip' , `tenant_id` varchar (128) COLLATE utf8_bin DEFAULT '' COMMENT '租户字段' , `encrypted_data_key` text COLLATE utf8_bin NOT NULL COMMENT '秘钥' , PRIMARY KEY (`id`), UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE =utf8_bin COMMENT= 'config_info_beta' ; -- 正在导出表 nacos.config_info_beta 的数据:~0 rows (大约) DELETE FROM `config_info_beta`; -- 导出 表 nacos.config_info_tag 结构 DROP TABLE IF EXISTS `config_info_tag`; CREATE TABLE IF NOT EXISTS `config_info_tag` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id' , `data_id` varchar (255) COLLATE utf8_bin NOT NULL COMMENT 'data_id' , `group_id` varchar (128) COLLATE utf8_bin NOT NULL COMMENT 'group_id' , `tenant_id` varchar (128) COLLATE utf8_bin DEFAULT '' COMMENT 'tenant_id' , `tag_id` varchar (128) COLLATE utf8_bin NOT NULL COMMENT 'tag_id' , `app_name` varchar (128) COLLATE utf8_bin DEFAULT NULL COMMENT 'app_name' , `content` longtext COLLATE utf8_bin NOT NULL COMMENT 'content' , `md5` varchar (32) COLLATE utf8_bin DEFAULT NULL COMMENT 'md5' , `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' , `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间' , `src_user` text COLLATE utf8_bin COMMENT 'source user' , `src_ip` varchar (50) COLLATE utf8_bin DEFAULT NULL COMMENT 'source ip' , PRIMARY KEY (`id`), UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE =utf8_bin COMMENT= 'config_info_tag' ; -- 正在导出表 nacos.config_info_tag 的数据:~0 rows (大约) DELETE FROM `config_info_tag`; -- 导出 表 nacos.config_tags_relation 结构 DROP TABLE IF EXISTS `config_tags_relation`; CREATE TABLE IF NOT EXISTS `config_tags_relation` ( `id` bigint NOT NULL COMMENT 'id' , `tag_name` varchar (128) COLLATE utf8_bin NOT NULL COMMENT 'tag_name' , `tag_type` varchar (64) COLLATE utf8_bin DEFAULT NULL COMMENT 'tag_type' , `data_id` varchar (255) COLLATE utf8_bin NOT NULL COMMENT 'data_id' , `group_id` varchar (128) COLLATE utf8_bin NOT NULL COMMENT 'group_id' , `tenant_id` varchar (128) COLLATE utf8_bin DEFAULT '' COMMENT 'tenant_id' , `nid` bigint NOT NULL AUTO_INCREMENT, PRIMARY KEY (`nid`), UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`), KEY `idx_tenant_id` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE =utf8_bin COMMENT= 'config_tag_relation' ; -- 正在导出表 nacos.config_tags_relation 的数据:~0 rows (大约) DELETE FROM `config_tags_relation`; -- 导出 表 nacos.group_capacity 结构 DROP TABLE IF EXISTS `group_capacity`; CREATE TABLE IF NOT EXISTS `group_capacity` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID' , `group_id` varchar (128) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群' , `quota` int unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值' , `usage` int unsigned NOT NULL DEFAULT '0' COMMENT '使用量' , `max_size` int unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值' , `max_aggr_count` int unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值' , `max_aggr_size` int unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值' , `max_history_count` int unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量' , `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' , `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间' , PRIMARY KEY (`id`), UNIQUE KEY `uk_group_id` (`group_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE =utf8_bin COMMENT= '集群、各Group容量信息表' ; -- 正在导出表 nacos.group_capacity 的数据:~0 rows (大约) DELETE FROM `group_capacity`; -- 导出 表 nacos.his_config_info 结构 DROP TABLE IF EXISTS `his_config_info`; CREATE TABLE IF NOT EXISTS `his_config_info` ( `id` bigint unsigned NOT NULL , `nid` bigint unsigned NOT NULL AUTO_INCREMENT, `data_id` varchar (255) COLLATE utf8_bin NOT NULL , `group_id` varchar (128) COLLATE utf8_bin NOT NULL , `app_name` varchar (128) COLLATE utf8_bin DEFAULT NULL COMMENT 'app_name' , `content` longtext COLLATE utf8_bin NOT NULL , `md5` varchar (32) COLLATE utf8_bin DEFAULT NULL , `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP , `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP , `src_user` text COLLATE utf8_bin, `src_ip` varchar (50) COLLATE utf8_bin DEFAULT NULL , `op_type` char (10) COLLATE utf8_bin DEFAULT NULL , `tenant_id` varchar (128) COLLATE utf8_bin DEFAULT '' COMMENT '租户字段' , `encrypted_data_key` text COLLATE utf8_bin NOT NULL COMMENT '秘钥' , PRIMARY KEY (`nid`), KEY `idx_gmt_create` (`gmt_create`), KEY `idx_gmt_modified` (`gmt_modified`), KEY `idx_did` (`data_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE =utf8_bin COMMENT= '多租户改造' ; -- 正在导出表 nacos.his_config_info 的数据:~0 rows (大约) DELETE FROM `his_config_info`; -- 导出 表 nacos.permissions 结构 DROP TABLE IF EXISTS `permissions`; CREATE TABLE IF NOT EXISTS `permissions` ( `role` varchar (50) COLLATE utf8mb4_general_ci NOT NULL , `resource` varchar (255) COLLATE utf8mb4_general_ci NOT NULL , ` action ` varchar (8) COLLATE utf8mb4_general_ci NOT NULL , UNIQUE KEY `uk_role_permission` (`role`,`resource`,` action `) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE =utf8mb4_general_ci; -- 正在导出表 nacos.permissions 的数据:~0 rows (大约) DELETE FROM `permissions`; -- 导出 表 nacos.roles 结构 DROP TABLE IF EXISTS `roles`; CREATE TABLE IF NOT EXISTS `roles` ( `username` varchar (50) COLLATE utf8mb4_general_ci NOT NULL , `role` varchar (50) COLLATE utf8mb4_general_ci NOT NULL , UNIQUE KEY `idx_user_role` (`username`,`role`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE =utf8mb4_general_ci; -- 正在导出表 nacos.roles 的数据:~1 rows (大约) DELETE FROM `roles`; INSERT INTO `roles` (`username`, `role`) VALUES ( 'nacos' , 'ROLE_ADMIN' ); -- 导出 表 nacos.tenant_capacity 结构 DROP TABLE IF EXISTS `tenant_capacity`; CREATE TABLE IF NOT EXISTS `tenant_capacity` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID' , `tenant_id` varchar (128) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Tenant ID' , `quota` int unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值' , `usage` int unsigned NOT NULL DEFAULT '0' COMMENT '使用量' , `max_size` int unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值' , `max_aggr_count` int unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数' , `max_aggr_size` int unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值' , `max_history_count` int unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量' , `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' , `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间' , PRIMARY KEY (`id`), UNIQUE KEY `uk_tenant_id` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE =utf8_bin COMMENT= '租户容量信息表' ; -- 正在导出表 nacos.tenant_capacity 的数据:~0 rows (大约) DELETE FROM `tenant_capacity`; -- 导出 表 nacos.tenant_info 结构 DROP TABLE IF EXISTS `tenant_info`; CREATE TABLE IF NOT EXISTS `tenant_info` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id' , `kp` varchar (128) COLLATE utf8_bin NOT NULL COMMENT 'kp' , `tenant_id` varchar (128) COLLATE utf8_bin DEFAULT '' COMMENT 'tenant_id' , `tenant_name` varchar (128) COLLATE utf8_bin DEFAULT '' COMMENT 'tenant_name' , `tenant_desc` varchar (256) COLLATE utf8_bin DEFAULT NULL COMMENT 'tenant_desc' , `create_source` varchar (32) COLLATE utf8_bin DEFAULT NULL COMMENT 'create_source' , `gmt_create` bigint NOT NULL COMMENT '创建时间' , `gmt_modified` bigint NOT NULL COMMENT '修改时间' , PRIMARY KEY (`id`), UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`), KEY `idx_tenant_id` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE =utf8_bin COMMENT= 'tenant_info' ; -- 正在导出表 nacos.tenant_info 的数据:~0 rows (大约) DELETE FROM `tenant_info`; -- 导出 表 nacos.users 结构 DROP TABLE IF EXISTS `users`; CREATE TABLE IF NOT EXISTS `users` ( `username` varchar (50) COLLATE utf8mb4_general_ci NOT NULL , ` password ` varchar (500) COLLATE utf8mb4_general_ci NOT NULL , `enabled` tinyint(1) NOT NULL , PRIMARY KEY (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE =utf8mb4_general_ci; -- 正在导出表 nacos.users 的数据:~1 rows (大约) DELETE FROM `users`; INSERT INTO `users` (`username`, ` password `, `enabled`) VALUES ( 'nacos' , '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu' , 1); /*!40103 SET TIME_ZONE=IFNULL(@OLD_TIME_ZONE, 'system') */ ; /*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */ ; /*!40014 SET FOREIGN_KEY_CHECKS=IFNULL(@OLD_FOREIGN_KEY_CHECKS, 1) */ ; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */ ; /*!40111 SET SQL_NOTES=IFNULL(@OLD_SQL_NOTES, 1) */ ; |
env文件
1 2 3 4 5 6 7 8 9 10 | PREFER_HOST_MODE=hostname MODE=standalone NACOS_AUTH_ENABLE=true SPRING_DATASOURCE_PLATFORM=mysql MYSQL_SERVICE_HOST=127.0.0.1 MYSQL_SERVICE_DB_NAME=nacos MYSQL_SERVICE_PORT=3306 MYSQL_SERVICE_USER=root MYSQL_SERVICE_PASSWORD="02120212" MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai |
启动命令
1 2 3 4 5 6 7 8 | docker run -d --name nacos -- env - file . /env -p 8848:8848 -p 9848:9848 -p 9849:9849 --restart=always nacos /nacos-server :v2.1.0-slim |
调用微服务三种方式
第一种
- 使用http请求
在启动类中使用Bean注入
1 2 3 4 5 6 7 8 9 10 11 | @MapperScan ( "com.heima.cart.mapper" ) @SpringBootApplication public class CartApplication { public static void main(String[] args) { SpringApplication.run(CartApplication. class , args); } @Bean public RestTemplate restTemplate() { return new RestTemplate(); } } |
实现类中注入RestTemplate
,注意加上@RequiredArgsConstructor
1 2 3 4 5 | @Service @RequiredArgsConstructor public class CartServiceImpl extends ServiceImpl implements ICartService { private final RestTemplate restTemplate; } |
使用调用发送请求
1 2 3 4 5 6 7 8 9 10 11 12 | private void handleCartItems(List vos) { // 1.获取商品id Set itemIds = vos.stream().map(CartVO::getItemId).collect(Collectors.toSet()); // 2.查询商品 HttpMethod.GET, null , new ParameterizedTypeReference() { }, Map.of( "ids" , StringUtils.join(itemIds, "," ))); List items = response.getBody(); // ... } |
第二种
- 使用负载均衡方式引入
引入nacos discovery依赖
1 | com.alibaba.cloudspring-cloud-starter-alibaba-nacos-configcom.alibaba.cloudspring-cloud-starter-alibaba-nacos-discoveryorg.springframework.cloudspring-cloud-starter-bootstrap |
将配置文件改为bootstrap
,配置nacos地址
1 2 3 4 5 6 7 8 9 10 11 | spring: cloud: nacos: discovery: server-addr: http : //192.168.3.98/ : 8848 namespace: hmall group: hmall-bunny config: server-addr: http : //192.168.3.98/ : 8848 namespace: hmall file-extension: yml |
如果在
discovery
中加入了group
,此时被调用的服务也要有group
而且要和当前的group
一致。
加入负载均衡
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | @Service @RequiredArgsConstructor public class CartServiceImpl extends ServiceImpl implements ICartService { private final DiscoveryClient discoveryClient; // 1.获取商品id Set itemIds = vos.stream().map(CartVO::getItemId).collect(Collectors.toSet()); // 2.查询商品,使用负载均衡 List instances = discoveryClient.getInstances( "item-service" ); ServiceInstance instance = instances.get(RandomUtil.randomInt(instances.size())); // 将原始的地址改为:instance.getUri() ResponseEntity> response = restTemplate.exchange(instance.getUri() + "/items?ids={ids}" , HttpMethod.GET, null , new ParameterizedTypeReference() { }, Map.of( "ids" , StringUtils.join(itemIds, "," ))); List items = response.getBody(); List items = itemClient.queryItemsByIds(itemIds); } |
第三种
- 使用openfeign
引入依赖
1 | org.springframework.cloudspring-cloud-starter-openfeignorg.springframework.cloudspring-cloud-starter-loadbalancerio.github.openfeignfeign-okhttp |
在启动类上加上注解@EnableFeignClients
1 2 3 4 5 6 7 8 | @MapperScan ( "com.heima.cart.mapper" ) @SpringBootApplication @EnableFeignClients public class CartApplication { public static void main(String[] args) { SpringApplication.run(CartApplication. class , args); } } |
编写FeignClient,其中item-service
是指配置文件中name
名字,一定要保持一致
1 2 3 4 5 | @FeignClient (value = "item-service" ) public interface ItemClient { @GetMapping ( "/items" ) List queryItemsByIds( @RequestParam ( "ids" ) Collection ids); } |
之后和正常调用接口即可
1 2 3 4 5 6 7 8 | private void handleCartItems(List vos) { // 1.获取商品id Set itemIds = vos.stream().map(CartVO::getItemId).collect(Collectors.toSet()); // 2.查询商品 List items = itemClient.queryItemsByIds(itemIds); // ... } |
nacos 共享配置
如果在nacos中有部分配置是相同的,可以设置为共享配置。
需要注意的是,如果在共享配置中制定了namespace
、group
那么在配置文件中也要有这些内容。
并且共享配置要在SpringBoot配置文件config
下配置
特别要注意!!!如果Data ID名称为my-common
那么在shared-configs
中为- data-id: my-common
,要与名称一样,不要加.yaml
如果data id有.yml
那么在配置文件中就要有.yml
名称必须要一至。
1 2 3 4 5 6 7 8 9 10 11 12 | cloud: nacos: discovery: server-addr: 192 .168.3.10: 8848 namespace: hmall config: server-addr: 192 .168.3.10: 8848 namespace: hmall file-extension: yml shared-configs: - data-id : hmall-common.yml refresh: true |
分配置是相同的,可以设置为共享配置。
需要注意的是,如果在共享配置中制定了namespace
、group
那么在配置文件中也要有这些内容。
并且共享配置要在SpringBoot配置文件config
下配置
特别要注意!!!如果Data ID名称为my-common
那么在shared-configs
中为- data-id: my-common
,要与名称一样,不要加.yaml
如果data id有.yml
那么在配置文件中就要有.yml
名称必须要一至。
1 2 3 4 5 6 7 8 9 10 11 12 | cloud: nacos: discovery: server-addr: 192 .168.3.10: 8848 namespace: hmall config: server-addr: 192 .168.3.10: 8848 namespace: hmall file-extension: yml shared-configs: - data-id : hmall-common.yml refresh: true |
到此这篇关于SpringBoot中配置nacos的方法实现的文章就介绍到这了,更多相关SpringBoot配置nacos内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!