使用框架:

Spring+Dubbo

分为 提供者/消费者

provider:

**配置:**新建文件 : beans-dubbo.xml,并写入, 可以把具体值写在properties中

<!-- 配置系统应用名称 -->
    <dubbo:application name="${APP_NAME}" />
    <!-- 通过注册中心发现监控中心服务 -->
    <dubbo:monitor protocol="registry" />
    <!-- 配置注册中心地址 -->
    <dubbo:registry protocol="zookeeper" address="${ZOOKEEPER_ADDRESS}" />

    <!-- 配置服务发布方式(Dubbo 支持多种协议发布,Hessian只是其中的一种,这里用了原生方式) -->
    <dubbo:protocol name="dubbo" port="${APP_PORT}"  />

application.xml: 写入 以下配置, 作用: 读取配置文件

 <bean id="propertyConfigurer"
        class="com.jieshun.jht.framework.config.properties.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:${profile.properties}/*.properties</value>
            </list>
        </property>
    </bean>

作用:使beans-dubbo.xml 文件生效(在beans路径下,这应该看得懂吧,傻子)

<!-- hessian调用配置 -->
    <import resource="classpath:beans/beans-*.xml" />

文件:

1.写一个接口,写个方法

2.写个实现类,实现这个接口,这个就是你对外提供的方法,实现类上写个注解 @Service(“userIntegralManageService”),名字与消费者中配置文件中的订阅服务的id保持一致

别人就能通过接口来调用这个方法,就达到了远程调用

consume:

<!-- 配置系统应用名称 -->
    <dubbo:application name="${APP_NAME}" />
    <!-- 通过注册中心发现监控中心服务 -->
    <dubbo:monitor protocol="registry" />
    <!-- 配置注册中心地址 -->
    <dubbo:registry protocol="zookeeper" address="${ZOOKEEPER_ADDRESS}" />

    <!-- 订阅服务 ,这个服务具体指的是提供的一个接口类,这id就是你能用的对象, -->
    <dubbo:reference id="userIntegralManageService" interface="com.jieshun.jht.account.service.IUserIntegralManageService" />

基本就是这样,如果未成功,详情看 “会员积分系统” 项目

如果要使用一个公共工程来放在方法,基本思路一样,就是把接口放在公共工程中,在提供者中去实现就行(此时需要将公共工程当成jar包导入,使用pom文件嘛)

使用框架:

springBoot + Dubbo:

consume:

**配置:**新建文件 : dubbo-consume.xml,并写入, 可以把具体值写在properties中

<!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="con" />

    <!-- 注册中心暴露服务地址 -->
   <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" />

    <dubbo:reference id="exampleService" interface="com.xkj.springboot.service.ExampleService" />

文件:

随便写个类,在类上加上注释: (也就是说,写哪个类上都可以,只要写了就行), (这是用了xml的方式来配置,SpringBoot肯定有直接写properties的方式来配置)

@Configuration
@PropertySource("classpath:dubbo/dubbo.properties")
@ImportResource({ "classpath:dubbo/*.xml" })

可以写个controller,方便验证.

provider:

配置:

<!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="pro"  />

    <!-- 注册中心暴露服务地址 -->
    <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->

   <!-- <dubbo:registry protocol="zookeeper" address="10.170.219.98:2181,10.173.55.173:2181" /> -->
   <dubbo:registry protocol="${dubbo.registry.protocol}" address="${dubbo.registry.address}" />

    <!-- 暴露服务 -->
    <dubbo:protocol name="${dubbo.protocol.name}" port="${dubbo.protocol.port}" />

    <bean id="exampleServiceImpl" class="com.xkj.springboot.service.impl.ExampleServiceImpl"></bean>

    <dubbo:service interface="com.xkj.springboot.service.ExampleService" ref="exampleServiceImpl" retries="0" timeout="6000" />

文件:

1.写一个接口,写个方法

2.写个实现类,实现这个接口,这个就是你对外提供的方法,实现类上写个注解 @Service(“exampleServiceImpl”),名字与消费者中配置文件中的订阅服务的id保持一致

别人就能通过接口来调用这个方法,就达到了远程调用

pom.xml:

<!-- dubbo -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring</artifactId>
                </exclusion>
            </exclusions>
            <version>2.5.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>