dubbo调用
使用统一测试环境zk,不允许私自搭建zk,服务通过分组注册到zk
测试环境zk集群 zookeeper://1:2181?backup=2:2181,3:2181
dubbo-admin http://3:9090/dubbo-admin/
dubbo服务注册分组
auto-config.xml添加dubbo.service.group(不一定要这个名字,配置名字可以自己起)分组配置,required="false"表示配置项可为空
<group name="dubbo">
<property name="dubbo.service.group" required="false" description="服务版本" />
</group>
在provier里添加group属性,先不要在配置中心添加dubbo.service.group分组配置,后面再统一添加,#if($dubbo_service_group)表示dubbo.service.group配置存在时设置分组属性,if里判断dubbo.service.group要改为dubbo_service_group,“.”velocity(autoconfig使用velocity模版引擎)会认为是对象属性,判断会有问题
<dubbo:provider #if($dubbo_service_group) group="${dubbo.service.group}" #end />
dubbo消费调用分组
消费分组设置需要对调用的服务进行梳理,同一个应用提供的服务设置一个分组配置
例如下面3个服务是riskmanagement提供的服务
<!--风控-查询最新授信信息服务-->
<dubbo:reference id="decisionResultFacade" interface="com.touna.credit.riskmanagement.facade.intf.DecisionResultFacade" />
<!--风控-预授信服务-->
<dubbo:reference id="creditRecordFacade" interface="com.touna.credit.riskmanagement.facade.intf.CreditRecordFacade" />
<!--风控-车主贷白名单服务V5.2.0-->
<dubbo:reference id="whitelistDetailFacade" interface="com.touna.credit.riskmanagement.facade.intf.WhitelistDetailFacade" />
auto-config.xml添加dubbo.riskmanagement.group(不一定要这个名字,配置名字可以自己起)分组配置
<group name="dubbo">
<property name="dubbo.service.group" required="false" description="服务版本" />
<property name="dubbo.riskmanagement.group" required="false" description="riskmanagement服务版本" />
</group>
先不要在配置中心里添加dubbo.riskmanagement.group分组配置,后面再统一添加
在reference里添加group属性,#if($dubbo_riskmanagement_group)表示dubbo.riskmanagement.group配置存在时设置分组属性
<!--风控-查询最新授信信息服务-->
<dubbo:reference id="decisionResultFacade" interface="com.touna.credit.riskmanagement.facade.intf.DecisionResultFacade" #if($dubbo_riskmanagement_group) group="${dubbo.riskmanagement.group}" #end />
<!--风控-预授信服务-->
<dubbo:reference id="creditRecordFacade" interface="com.touna.credit.riskmanagement.facade.intf.CreditRecordFacade" #if($dubbo_riskmanagement_group) group="${dubbo.riskmanagement.group}" #end />
<!--风控-车主贷白名单服务V5.2.0-->
<dubbo:reference id="whitelistDetailFacade" interface="com.touna.credit.riskmanagement.facade.intf.WhitelistDetailFacade" #if($dubbo_riskmanagement_group) group="${dubbo.riskmanagement.group}" #end />
发送消息
使用统一测试环境MQ,不允许私自搭建MQ
测试环境MQ 1:9876;2:9876
rocketmq-console http://3:8080
rocketmq寻址(host绑定):
3 jmenv.tbsite.net
消息通过在生产分组名称和消费分组名称里指定路由分组实现消息路由
DefaultMQProducer producer = new DefaultMQProducer("test_producer_group_name%%h5");
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("test_consumer_group_name%%h5");
生产者分组名称和消费者分组名称里的特定符号%%后面是路由分组信息,例如:指定为h5(表示h5项目路由分组),指定路由分组的生产者发出来的消息只能被相同路由分组的消费者消费,test_producer_group_name%%h5 生产者发送的消息只能被 xxxx%%h5 消费者消费
因为需要在生产者分组名称和消费者分组名称里设置路由分组信息,所以要把这两个名称做为配置项,在配置中心新增配置项rocketmq.produce.group.name、rocketmq.consumer.group.name,新增stable版本配置值xxxx%%stable(原来名称后加%%stable),stable环境取这个配置信息
DefaultMQProducer producer = new DefaultMQProducer("${rocketmq.produce.group.name}");
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("${rocketmq.consumer.group.name}");
环境部署指南
项目1
只涉及系统A修改,那只需要部署系统A的项目1环境,其他系统不需要部署,使用稳定环境提供的服务
项目2
项目3
涉及系统A和系统B修改,但监听处理系统D的消息的逻辑发生改变,所以需要部署系统D的项目环境,并且设置消息路由分组,让系统D的消息能回到系统A处理