天天看點

dubbo-consumer-provider

總體pom

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.songlk</groupId>
  <artifactId>dubbo</artifactId>
  <packaging>pom</packaging>
  <version>1.0-SNAPSHOT</version>
  <modules>
    <module>consumer</module>
    <module>provider</module>
    <module>api</module>
  </modules>

  <name>dubbo</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    <dubbo.version>2.7.3</dubbo.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>
           

dubbo

.idea

api

consumer

provider

src

dubbo.iml

pom.xml

-------

pojo module  公用

package com.songlk.pojo;

import lombok.Data;

import java.io.Serializable;
@Data
public class User implements Serializable{
 private String name;
 private String age;

}
           
package com.songlk.service;

import com.songlk.pojo.User;

public interface UserService {
      User selectById(String id);
}
           

----------------------------

provider

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>dubbo</artifactId>
        <groupId>com.songlk</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>



    <artifactId>provider</artifactId>

     <dependencies>

             <dependency>
                 <groupId>org.springframework</groupId>
                 <artifactId>spring-webmvc</artifactId>
                 <version>4.3.20.RELEASE</version>
             </dependency>


         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>


         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
             <version>1.16.20</version>
             <scope>provided</scope>
         </dependency>
         <!--dubbo zookeeper-->
         <dependency>
             <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo</artifactId>
             <version>${dubbo.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.dubbo</groupId>
             <artifactId>dubbo-dependencies-zookeeper</artifactId>
             <version>${dubbo.version}</version>
             <type>pom</type>
         </dependency>
         <dependency>
             <groupId>com.songlk</groupId>
             <artifactId>api</artifactId>
             <version>1.0-SNAPSHOT</version>
         </dependency>


     </dependencies>
</project>
           
package com.songlk.service;

import com.songlk.pojo.User;

public interface UserService {
    public User selectById(String id);
}
           
package com.songlk.service.impl;

import com.songlk.pojo.User;
import com.songlk.service.UserService;

public class UserServiceImp implements UserService {
    @Override
    public User selectById(String id) {
        System.out.println("-----provieder UserServiceImp selectById");
        User user=new User();
        user.setAge("provieder555");
        user.setName("provieder555");
        return user;
    }
}
           

----

provider.xml

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">

    <!-- provider's application name, used for tracing dependency relationship -->
    <dubbo:application name="demo-provider"/>
    <!-- use multicast registry center to export service -->
    <!--<dubbo:registry address="multicast://224.5.6.7:1234"/>-->
    <dubbo:registry address="zookeeper://192.168.198.200:2181?backup=192.168.198.201:2181,192.168.198.202:2181" />

    <!-- use dubbo protocol to export service on port 20880 -->
    <dubbo:protocol name="dubbo" port="20880"/>
     <!-- declare the service interface to be exported -->
    <dubbo:service inter ref="UserServiceImp"/>
    <!-- service implementation, as same as regular local bean -->
    <bean id="UserServiceImp" class="com.songlk.service.impl.UserServiceImp"/>


</beans>
           

-----

consumer

pom

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>dubbo</artifactId>
        <groupId>com.songlk</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>consumer</artifactId>

    <name>consumer</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.20</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.songlk</groupId>
            <artifactId>api</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo</artifactId>
            <version>${dubbo.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <version>${dubbo.version}</version>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.2.0.M3</version>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
            <plugins>
                <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.2</version>
                </plugin>
                <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
                <plugin>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.7.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                    <version>3.0.0</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>
           

consumer.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context"

       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
         http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd

         http://dubbo.apache.org/schema/dubbo
       http://dubbo.apache.org/schema/dubbo/dubbo.xsd
       ">

    <!--http://www.springframework.org/schema/context-->
    <!--http://www.springframework.org/schema/context/spring-context.xsd-->


    <context:component-scan base-package="com.songlk.service">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <!-- consumer's application name, used for tracing dependency relationship (not a matching criterion),
    don't set it same as provider -->

    <dubbo:application name="demo-consumer">
        <dubbo:parameter key="qos.enable" value="true" />
        <dubbo:parameter key="qos.accept.foreign.ip" value="false" />
        <dubbo:parameter key="qos.port" value="33333" />
    </dubbo:application>
    <!-- use multicast registry center to discover service -->
    <!--<dubbo:registry address="multicast://224.5.6.7:1234"/>-->
    <dubbo:registry address="zookeeper://192.168.198.200:2181?backup=192.168.198.201:2181,192.168.198.202:2181" />

    <!-- generate proxy for the remote service, then demoService can be used in the same way as the
    local regular interface -->
    <dubbo:reference id="userService"
                     inter/>
</beans>
           

----

package com.songlk.bean;
import com.songlk.pojo.User;
import lombok.Data;
import java.io.Serializable;
 @Data
public class MeetingPub implements Serializable{
    private int id;
    private String content ;
    private User user;

}
           
package com.songlk.service;

import com.songlk.bean.MeetingPub;

public interface MeetingService {
      MeetingPub selectMeetingPub(int id);
}
           
package com.songlk.service.impl;

import com.songlk.bean.MeetingPub;
import com.songlk.pojo.User;
import com.songlk.service.MeetingService;
import com.songlk.service.UserService;
//import org.apache.dubbo.config.annotation.Reference;
//import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class MeetingServiceImp implements MeetingService {
    @Autowired
    UserService userService;

    @Override
    public MeetingPub selectMeetingPub(int id) {
        MeetingPub meetingPub=new MeetingPub();
        meetingPub.setId(100);
        meetingPub.setContent("content");
//        userService
        User user=userService.selectById("1");
        meetingPub.setUser(user);
        return  meetingPub;
    }
}
           
package com.songlk;

import com.songlk.bean.MeetingPub;
import com.songlk.service.MeetingService;
//import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;

/**
 * Hello world!
 *
 */
public class App 
{

    public static void main( String[] args ) throws IOException

    {

        ClassPathXmlApplicationContext classPathXmlApplicationContext=new
                ClassPathXmlApplicationContext(
                new String[]{"classpath:consumer.xml"});
        classPathXmlApplicationContext.start();
        System.out.println( "Hello consumer ok!" );

        MeetingService meetingService
                =classPathXmlApplicationContext
                .getBean(MeetingService.class);
        MeetingPub meetingPub=meetingService.selectMeetingPub(0);
        System.out.println(meetingPub);
        System.in.read();

    }
}
           

[22/11/19 04:59:02:002 CST] main  INFO server.Server:  [DUBBO] qos-server bind localhost:33333, dubbo version: 2.7.3, current host: 10.130.24.30

[22/11/19 04:59:02:002 CST] main  INFO zookeeper.ZookeeperRegistry:  [DUBBO] Load registry cache file C:\Users\Administrator\.dubbo\dubbo-registry-demo-consumer-192.168.198.200:2181.cache, data: {com.songlk.service.UserService=empty://10.130.24.30/com.songlk.service.UserService?application=demo-consumer&category=routers&dubbo=2.0.2&interface=com.songlk.service.UserService&lazy=false&methods=selectById&pid=5308&qos.accept.foreign.ip=false&qos.enable=true&qos.port=33333&release=2.7.3&side=consumer&sticky=false&timestamp=1574413108499 empty://10.130.24.30/com.songlk.service.UserService?application=demo-consumer&category=configurators&dubbo=2.0.2&interface=com.songlk.service.UserService&lazy=false&methods=selectById&pid=5308&qos.accept.foreign.ip=false&qos.enable=true&qos.port=33333&release=2.7.3&side=consumer&sticky=false&timestamp=1574413108499 dubbo://10.130.24.30:20880/com.songlk.service.UserService?anyhost=true&application=demo-provider&bean.name=com.songlk.service.UserService&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=com.songlk.service.UserService&methods=selectById&pid=5372&register=true&release=2.7.3&side=provider&timestamp=1574412761709}, dubbo version: 2.7.3, current host: 10.130.24.30

[22/11/19 04:59:02:002 CST] main  INFO zookeeper.ZookeeperTransporter:  [DUBBO] find valid zookeeper client from the cache for address: zookeeper://192.168.198.200:2181/org.apache.dubbo.registry.RegistryService?application=demo-consumer&backup=192.168.198.201:2181,192.168.198.202:2181&dubbo=2.0.2&interface=org.apache.dubbo.registry.RegistryService&pid=5512&qos.accept.foreign.ip=false&qos.enable=true&qos.port=33333&release=2.7.3&timestamp=1574413141700, dubbo version: 2.7.3, current host: 10.130.24.30

[22/11/19 04:59:02:002 CST] main  INFO zookeeper.ZookeeperRegistry:  [DUBBO] Register: consumer://10.130.24.30/com.songlk.service.UserService?application=demo-consumer&category=consumers&check=false&dubbo=2.0.2&interface=com.songlk.service.UserService&lazy=false&methods=selectById&pid=5512&qos.accept.foreign.ip=false&qos.enable=true&qos.port=33333&release=2.7.3&side=consumer&sticky=false&timestamp=1574413141376, dubbo version: 2.7.3, current host: 10.130.24.30

[22/11/19 04:59:02:002 CST] main  INFO zookeeper.ZookeeperRegistry:  [DUBBO] Subscribe: consumer://10.130.24.30/com.songlk.service.UserService?application=demo-consumer&category=providers,configurators,routers&dubbo=2.0.2&interface=com.songlk.service.UserService&lazy=false&methods=selectById&pid=5512&qos.accept.foreign.ip=false&qos.enable=true&qos.port=33333&release=2.7.3&side=consumer&sticky=false&timestamp=1574413141376, dubbo version: 2.7.3, current host: 10.130.24.30

[22/11/19 04:59:02:002 CST] main  INFO zookeeper.ZookeeperRegistry:  [DUBBO] Notify urls for subscribe url consumer://10.130.24.30/com.songlk.service.UserService?application=demo-consumer&category=providers,configurators,routers&dubbo=2.0.2&interface=com.songlk.service.UserService&lazy=false&methods=selectById&pid=5512&qos.accept.foreign.ip=false&qos.enable=true&qos.port=33333&release=2.7.3&side=consumer&sticky=false&timestamp=1574413141376, urls: [dubbo://10.130.24.30:20880/com.songlk.service.UserService?anyhost=true&application=demo-provider&bean.name=com.songlk.service.UserService&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=com.songlk.service.UserService&methods=selectById&pid=5332&register=true&release=2.7.3&side=provider&timestamp=1574413127649, empty://10.130.24.30/com.songlk.service.UserService?application=demo-consumer&category=configurators&dubbo=2.0.2&interface=com.songlk.service.UserService&lazy=false&methods=selectById&pid=5512&qos.accept.foreign.ip=false&qos.enable=true&qos.port=33333&release=2.7.3&side=consumer&sticky=false&timestamp=1574413141376, empty://10.130.24.30/com.songlk.service.UserService?application=demo-consumer&category=routers&dubbo=2.0.2&interface=com.songlk.service.UserService&lazy=false&methods=selectById&pid=5512&qos.accept.foreign.ip=false&qos.enable=true&qos.port=33333&release=2.7.3&side=consumer&sticky=false&timestamp=1574413141376], dubbo version: 2.7.3, current host: 10.130.24.30

[22/11/19 04:59:02:002 CST] main  INFO transport.AbstractClient:  [DUBBO] Succeed connect to server /10.130.24.30:20880 from NettyClient 10.130.24.30 using dubbo version 2.7.3, channel is NettyChannel [channel=[id: 0x8b215c88, L:/10.130.24.30:63693 - R:/10.130.24.30:20880]], dubbo version: 2.7.3, current host: 10.130.24.30

[22/11/19 04:59:02:002 CST] main  INFO transport.AbstractClient:  [DUBBO] Start NettyClient WIN-V2QAFF7ED21/10.130.24.30 connect to the server /10.130.24.30:20880, dubbo version: 2.7.3, current host: 10.130.24.30

[22/11/19 04:59:02:002 CST] main  INFO config.AbstractConfig:  [DUBBO] Refer dubbo service com.songlk.service.UserService from url zookeeper://192.168.198.200:2181/org.apache.dubbo.registry.RegistryService?anyhost=true&application=demo-consumer&bean.name=com.songlk.service.UserService&check=false&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=com.songlk.service.UserService&lazy=false&methods=selectById&pid=5512&qos.accept.foreign.ip=false&qos.enable=true&qos.port=33333&register=true&register.ip=10.130.24.30&release=2.7.3&remote.application=demo-provider&side=consumer&sticky=false&timestamp=1574413141376, dubbo version: 2.7.3, current host: 10.130.24.30

Hello consumer ok!

MeetingPub(id=100, content=content, user=User(name=provieder555, age=provieder555))

繼續閱讀