rpc-dubbo-redis

工程需要使用rpc,比较了下决定使用dubbo的。所以做了些尝试,记下了对应的配置过程。
rpc需要2个服务:consumer和provider
其中需要有一个中间父类包作为媒介来存放接口类以及pojo对象供consumer和provider这2者使用。

Registry看了下网上使用的最多的是zookeeper,我这边环境未配置zookeeper,所以决定先使用redis试试,但是redis的Registry查看了下源码,又是基于jedis的jedispool,所以项目原本使用lettuce-core的都得换成jedis。
redis的配置我上一篇文章已写过,这边就不多做阐述了。

PS:如果redis没配可以使用multicast(生产不建议,测试环境可尝试,不需要单独安装东西,并且不能跨路由)
dubbo.registry.address= multicast://224.5.6.7:1234?unicast=false
注意同一台机器既做consumer又做provider时需要把unicast=false加上,否则会找不到,而且起好服务之后注册会有延迟。

好的,废话少说,以下开始配置

provider(被调用方):

增加application.yml的配置

增加redis以及dubbo配置
对应使用父类包的接口要暴露出来,让dubbo能扫描到
spring.scan.base-packages: com.xxx.xxx.rpc
增加jedis线程池配置

spring:
  redis:
    database: 0
    host: XX.XX.XX.XX
    port: 6379
    password:
    timeout: 30000  
    jedis:
       pool: 
         max-idle: 80
         #max-wait: -1ms
         min-idle: 20
         max-active: 100
  data:
    redis:  
      repositories:
        enabled: false  
dubbo:
  application:
    id: XXX
    name: XXX
    version: 1.0.0
  registry:
    id: dubbo-redis
    address: redis://XX.XX.XX.XX:6379
  protocol:
    id: dubbo
    name: dubbo
    port: 20880      
  scan: 
    base-packages: com.xxx.xxx.rpc
  #aop:
    #proxy-target-class: true

增加log4j.properties的配置

启动时候会报警告,不管也行,但看着难过就加一下对应配置文件

#log4j.rootLogger=info,console
log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

增加pom.xml依赖

ps: 如果rpc报错找不到可能需要增加aop对应包和配置。我这里没有报所以注释掉了

		
		<!-- dubbo redis 依赖-->
		<dependency>
		    <groupId>org.apache.dubbo</groupId>
		    <artifactId>dubbo-registry-redis</artifactId>
		    <version>2.7.8</version>
		</dependency>
		
		<!-- dubbo 依赖-->
		<dependency>
		    <groupId>org.apache.dubbo</groupId>
		    <artifactId>dubbo-spring-boot-starter</artifactId>
		    <version>2.7.8</version>
		</dependency>
		
		<!-- redis 依赖-->
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-redis</artifactId>
		</dependency>
		<dependency>
		  <groupId>redis.clients</groupId>
		  <artifactId>jedis</artifactId>
		</dependency>
		
		<!-- <dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-aop</artifactId>
		</dependency>	 -->				

启动类增加dubbo注解

@EnableDubbo

增加处理类RpcTestServiceImpl.java

需要引用接口,并且注入注解,retries设置为0次是为了失败也不重复调用

@Component  
@DubboService(retries = 0)  
public class RpcTestServiceImpl implements RpcTestService{
	//...
}

consumer(调用方):

增加application.yml的配置

spring:
  redis:
    database: 0
    host: XX.XX.XX.XX
    port: 6379
    password:
    timeout: 30000  
    jedis:
       pool: 
         max-idle: 80
         #max-wait: -1ms
         min-idle: 20
         max-active: 100
  data:
    redis:  
      repositories:
        enabled: false  
dubbo:
  application:
    id: XXX
    name: XXX
    version: 1.0.0
  registry:
    id: dubbo-redis
    address: redis://XX.XX.XX.XX:6379
  protocol:
    id: dubbo
    name: dubbo
    port: 20880      

增加log4j.properties的配置

#log4j.rootLogger=info,console
log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

增加pom.xml依赖

		
		<!-- dubbo redis 依赖-->
		<dependency>
		    <groupId>org.apache.dubbo</groupId>
		    <artifactId>dubbo-registry-redis</artifactId>
		    <version>2.7.8</version>
		</dependency>
		
		<!-- dubbo 依赖-->
		<dependency>
		    <groupId>org.apache.dubbo</groupId>
		    <artifactId>dubbo-spring-boot-starter</artifactId>
		    <version>2.7.8</version>
		</dependency>
		
		<!-- redis 依赖-->
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-redis</artifactId>
		</dependency>
		<dependency>
		  <groupId>redis.clients</groupId>
		  <artifactId>jedis</artifactId>
		</dependency>			

增加调用类RpcTestToXXXServiceImpl.java

check = false属性是为了启动服务时候如果对应provider未启动,不会报错起不了服务

@DubboReference(check = false, retries = 0)  
RpcTestService rpcTestService;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值