Nacos使用备忘
1.远程调用:
在pom文件中引入dubbo依赖包以及对应项目的jar依赖包
<!-- Nacos 注册与配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<exclusions>
<exclusion>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-api</artifactId>
<version>1.1.4</version>
<!-- Dubbo dependency -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
</dependency>
<!-- Alibaba Spring Context extension -->
<dependency>
<groupId>com.alibaba.spring</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>com.gtown.cloud</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
</dependency>
<!-- omp库存服务信息-->
<dependency>
<groupId>com.XXX.omp</groupId>
<artifactId>user-service-api</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<!-- omp库存服务信息-->
<dependency>
<groupId>com.XXX.omp</groupId>
<artifactId>omp-warehouse-service-api</artifactId>
<version>1.0.1-SNAPSHOT</version>
</dependency>
2.在application.yml
dubbo:
application:
name: @artifactId@ #填写pom中的本项目的artifactId
registry:
address: nacos://@nacosDiscoveryServerAddr@ #填写注册中心地址
protocol:
name: dubbo
port: 22020
reference:
retries: 0
consumer:
timeout: 10000
check: false
retries: 0
filter: webUserFilter #自定义的过滤器
provider:
filter: webUserFilter #自定义的过滤器
3.在bootstrap.yml中
spring:
cloud:
nacos:
discovery:
server-addr: @nacosDiscoveryServerAddr@
namespace: @nacosDiscoveryNamespace@ #需要选取引用的远程服务相同的命名空间,不然无法调用
service: xxx-pay # 通常就写项目名称,发布到nacos的的名称
metadata:
registerGateway: true
registerOpenGateway: true
config:
server-addr: @nacosConfigServerAddr@
namespace: @nacosConfigNamespace@
file-extension: yml
access-key: @nacosAccessKey@
secret-key: @nacosSecretKey@
endpoint: @nacosConfigEndpoint@
extension-configs:
- dataId: public-key.yml
- dataId: redis.yml
4.在启动类上加上@EnableDubbo注解
@EnableDubbo
@Slf4j
@SpringBootApplication
@EnableTransactionManagement #视项目而定是否需要
@EnableAspectJAutoProxy #视项目而定是否需要
@EnableScheduling #视项目而定是否需要
@ServletComponentScan("com.XXX.cloud.order.config")#使用@ServletComponentScan注解后,Servlet、Filter、Listener可以直接通过@WebServlet、@WebFilter、@WebListener注解自动注册,无需其他代码。
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
log.info("================SUCCESS==============");
}
}
5.在具体使用的service中引用项目时
import org.springframework.stereotype.Service;
import com.alibaba.dubbo.config.annotation.Reference;
@Service
public class UmallGoodsServiceImpl implements IUmallGoodsService {
@Reference(version = "1.0") #版本version就是引用的远程项目包的版本
private IApiProductSpuService productSpuService;
@Reference(version = "1.0")
private IApiChannelItemService channelItemService;
......
}
备注:可以将单个微服务的Iservice单独放在一个package下进行管理,方便外部调用。