简单的motan使用

1.新建项目

2.motan  pom.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6 
 7     <groupId>com.motan</groupId>
 8     <artifactId>motan</artifactId>
 9     <packaging>pom</packaging>
10     <version>1.0-SNAPSHOT</version>
11     <modules>
12         <module>motan-server</module>
13         <module>motan-client</module>
14     </modules>
15     
16     <parent>
17         <groupId>org.springframework.boot</groupId>
18         <artifactId>spring-boot-starter-parent</artifactId>
19         <version>1.5.7.RELEASE</version>
20     </parent>
21 
22     <build>
23         <plugins>
24             <plugin>
25                 <groupId>org.springframework.boot</groupId>
26                 <artifactId>spring-boot-maven-plugin</artifactId>
27                 <executions>
28                     <execution>
29                         <goals>
30                             <goal>repackage</goal>
31                         </goals>
32                     </execution>
33                 </executions>
34                 <configuration>
35                     <executable>true</executable>
36                 </configuration>
37             </plugin>
38         </plugins>
39     </build>
40 
41 </project>

3.motan-server pom.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <parent>
 6         <artifactId>motan</artifactId>
 7         <groupId>com.motan</groupId>
 8         <version>1.0-SNAPSHOT</version>
 9     </parent>
10     <modelVersion>4.0.0</modelVersion>
11 
12     <artifactId>motan-server</artifactId>
13 
14     <dependencies>
15         <!--springboot自动配置 不需要web依赖-->
16         <dependency>
17             <groupId>org.springframework.boot</groupId>
18             <artifactId>spring-boot-starter</artifactId>
19         </dependency>
20         <!--motan核心依赖-->
21         <dependency>
22             <groupId>com.weibo</groupId>
23             <artifactId>motan-core</artifactId>
24             <version>0.2.2</version>
25         </dependency>
26         <!--motan传输层 netty实现-->
27         <dependency>
28             <groupId>com.weibo</groupId>
29             <artifactId>motan-transport-netty</artifactId>
30             <version>0.2.2</version>
31         </dependency>
32         <!--motan与springboot整合-->
33         <dependency>
34             <groupId>com.weibo</groupId>
35             <artifactId>motan-springsupport</artifactId>
36             <version>0.2.1</version>
37         </dependency>
38         <!--motan使用zookeeper作为注册中心-->
39         <dependency>
40             <groupId>com.weibo</groupId>
41             <artifactId>motan-registry-zookeeper</artifactId>
42             <version>0.2.1</version>
43         </dependency>
44     </dependencies>
45 
46 </project>

4.motan-client pom.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <parent>
 6         <artifactId>motan</artifactId>
 7         <groupId>com.motan</groupId>
 8         <version>1.0-SNAPSHOT</version>
 9     </parent>
10     <modelVersion>4.0.0</modelVersion>
11 
12     <artifactId>motan-client</artifactId>
13 
14     <properties>
15         <motan.version>0.2.1</motan.version>
16     </properties>
17 
18     <dependencies>
19         <!--springboot自动配置+web mvc自动配置-->
20         <dependency>
21             <groupId>org.springframework.boot</groupId>
22             <artifactId>spring-boot-starter-web</artifactId>
23         </dependency>
24         <!--motan核心依赖-->
25         <dependency>
26             <groupId>com.weibo</groupId>
27             <artifactId>motan-core</artifactId>
28             <version>0.2.2</version>
29         </dependency>
30         <!--motan传输层 netty实现-->
31         <dependency>
32             <groupId>com.weibo</groupId>
33             <artifactId>motan-transport-netty</artifactId>
34             <version>0.2.2</version>
35         </dependency>
36         <!--motan与springboot整合-->
37         <dependency>
38             <groupId>com.weibo</groupId>
39             <artifactId>motan-springsupport</artifactId>
40             <version>0.2.1</version>
41         </dependency>
42         <!--motan使用zookeeper作为注册中心-->
43         <dependency>
44             <groupId>com.weibo</groupId>
45             <artifactId>motan-registry-zookeeper</artifactId>
46             <version>0.2.1</version>
47         </dependency>
48 
49         <!--依赖关系-->
50         <dependency>
51             <groupId>com.motan</groupId>
52             <artifactId>motan-server</artifactId>
53             <version>1.0-SNAPSHOT</version>
54         </dependency>
55 
56         <dependency>
57             <groupId>org.springframework.boot</groupId>
58             <artifactId>spring-boot-starter-test</artifactId>
59         </dependency>
60     </dependencies>
61 </project>

5.motan-server 结构

5.1 MotanConfig.class

 1 package com.motan.config;
 2 
 3 import com.weibo.api.motan.config.springsupport.*;
 4 import org.springframework.beans.factory.annotation.Value;
 5 import org.springframework.context.annotation.Bean;
 6 import org.springframework.context.annotation.Configuration;
 7 
 8 @Configuration
 9 public class MotanConfig {
10 
11     @Bean
12     public AnnotationBean motanAnnotationBean(@Value("${motan.annotation.package}") String packageName) {
13         AnnotationBean motanAnnotationBean = new AnnotationBean();
14         motanAnnotationBean.setPackage(packageName);
15         return motanAnnotationBean;
16     }
17 
18     @Bean(name = "motan")
19     public ProtocolConfigBean protocolConfig() {
20         ProtocolConfigBean config = new ProtocolConfigBean();
21         config.setDefault(true);
22         config.setSerialization("hessian2");
23         config.setName("motan");
24         config.setMaxContentLength(1548576);
25         config.setRequestTimeout(50000000);
26 
27         return config;
28     }
29 
30     @Bean(name = "registry")
31     public RegistryConfigBean registryConfigSit(@Value("${motan.zookeeper.host}") String zookeeperAddress) {
32         RegistryConfigBean config = new RegistryConfigBean();
33         config.setDefault(true);
34         config.setRegProtocol("zookeeper");
35         config.setAddress(zookeeperAddress);
36         return config;
37     }
38 
39     /**
40      * 服务端配置
41      */
42     @Bean(name = "motanServerBasicConfig")
43     public BasicServiceConfigBean baseServiceConfig(@Value("${motan.export.port}") String port) {
44         BasicServiceConfigBean config = new BasicServiceConfigBean();
45         config.setDefault(true);
46         config.setExport("motan:" + port);
47         config.setGroup("sinomall");
48         config.setAccessLog(false);
49         config.setShareChannel(true);
50         config.setRequestTimeout(9000000);
51         config.setRegistry("registry");
52         return config;
53     }
54 
55     /**
56      * 客户端配置
57      */
58     @Bean(name = "motanClientBasicConfig")
59     public BasicRefererConfigBean baseRefererConfig() {
60         BasicRefererConfigBean config = new BasicRefererConfigBean();
61         config.setProtocol("motan");
62         config.setGroup("sinomall");
63         config.setAccessLog(false);
64         config.setRegistry("registry");
65         config.setCheck(false);
66         config.setRetries(0);
67         config.setThrowException(true);
68         config.setRequestTimeout(9000);
69         config.setDefault(true);
70         return config;
71     }
72 }

5.2 application.properties

1 # motan配置
2 motan.annotation.package=com.motan
3 motan.export.port=${random.int[5001,9999]}
4 motan.zookeeper.host=127.0.0.1:2181

5.3 HelloService.class

1 package com.motan.server;
2 
3 /**
4  * @date 2018/5/28
5  */
6 public interface HelloService {
7     String hello();
8 }

5.4 HelloServiceImpl.class

 1 package com.motan.server.impl;
 2 
 3 import com.motan.server.HelloService;
 4 import com.weibo.api.motan.config.springsupport.annotation.MotanService;
 5 
 6 /**
 7  * @date 2018/5/28
 8  */
 9 @MotanService
10 public class HelloServiceImpl implements HelloService {
11 
12     @Override
13     public String hello() {
14         return "hello motan";
15     }
16 }

5.5 MotanServerAplication.class

 1 package com.motan;
 2 
 3 import com.weibo.api.motan.common.MotanConstants;
 4 import com.weibo.api.motan.util.MotanSwitcherUtil;
 5 import org.springframework.boot.SpringApplication;
 6 import org.springframework.boot.autoconfigure.SpringBootApplication;
 7 
 8 /**
 9  * @date 2018/5/28
10  */
11 @SpringBootApplication
12 public class MotanServerAplication {
13     public static void main(String[] args) {
14         SpringApplication.run(MotanServerAplication.class, args);
15         //服务提供方需要开启心跳检测
16         MotanSwitcherUtil.setSwitcherValue(MotanConstants.REGISTRY_HEARTBEAT_SWITCHER, true);
17         System.out.println("服务端启动完成......");
18     }
19 }

6. motan-client 结构

6.1 MotanConfig.class

 1 package com.motanzookeper.config;
 2 
 3 import com.weibo.api.motan.config.springsupport.*;
 4 import org.springframework.beans.factory.annotation.Value;
 5 import org.springframework.context.annotation.Bean;
 6 import org.springframework.context.annotation.Configuration;
 7 
 8 @Configuration
 9 public class MotanConfig {
10 
11     @Bean
12     public AnnotationBean motanAnnotationBean(@Value("${motan.annotation.package}") String packageName) {
13         AnnotationBean motanAnnotationBean = new AnnotationBean();
14         motanAnnotationBean.setPackage(packageName);
15         return motanAnnotationBean;
16     }
17 
18     @Bean(name = "motan")
19     public ProtocolConfigBean protocolConfig() {
20         ProtocolConfigBean config = new ProtocolConfigBean();
21         config.setDefault(true);
22         config.setSerialization("hessian2");
23         config.setName("motan");
24         config.setMaxContentLength(1548576);
25         config.setRequestTimeout(50000000);
26 
27         return config;
28     }
29 
30     @Bean(name = "registry")
31     public RegistryConfigBean registryConfigSit(@Value("${motan.zookeeper.host}") String zookeeperAddress) {
32         RegistryConfigBean config = new RegistryConfigBean();
33         config.setDefault(true);
34         config.setRegProtocol("zookeeper");
35         config.setAddress(zookeeperAddress);
36         return config;
37     }
38 
39     /**
40      * 服务端配置
41      */
42     @Bean(name = "motanServerBasicConfig")
43     public BasicServiceConfigBean baseServiceConfig(@Value("${motan.export.port}") String port) {
44         BasicServiceConfigBean config = new BasicServiceConfigBean();
45         config.setDefault(true);
46         config.setExport("motan:" + port);
47         config.setGroup("sinomall");
48         config.setAccessLog(false);
49         config.setShareChannel(true);
50         config.setRequestTimeout(9000000);
51         config.setRegistry("registry");
52         return config;
53     }
54 
55     /**
56      * 客户端配置
57      */
58     @Bean(name = "motanClientBasicConfig")
59     public BasicRefererConfigBean baseRefererConfig() {
60         BasicRefererConfigBean config = new BasicRefererConfigBean();
61         config.setProtocol("motan");
62         config.setGroup("sinomall");
63         config.setAccessLog(false);
64         config.setRegistry("registry");
65         config.setCheck(false);
66         config.setRetries(0);
67         config.setThrowException(true);
68         config.setRequestTimeout(9000);
69         config.setDefault(true);
70         return config;
71     }
72 }

6.2 application.properties

1 server.port=7081
2 # motan配置
3 motan.annotation.package=com.motanzookeper
4 motan.export.port=${random.int[5001,9999]}
5 motan.zookeeper.host=127.0.0.1:2181

6.3 HelloTest.class

 1 package com.motanzookeper.test;
 2 
 3 import com.motan.server.HelloService;
 4 import com.motanzookeper.MotanClientAplication;
 5 import com.weibo.api.motan.config.springsupport.annotation.MotanReferer;
 6 import org.junit.Test;
 7 import org.junit.runner.RunWith;
 8 import org.springframework.boot.test.context.SpringBootTest;
 9 import org.springframework.test.context.junit4.SpringRunner;
10 
11 @SpringBootTest(classes = MotanClientAplication.class)
12 @RunWith(SpringRunner.class)
13 public class HelloTest {
14 
15     @MotanReferer
16     private HelloService helloService;
17 
18     @Test
19     public void addUsers() {
20         System.out.println("helloService:" + helloService);
21         System.out.println(helloService.hello());
22     }
23 }

6.4 MotanClientAplication.class

 1 package com.motanzookeper;
 2 
 3 import org.springframework.boot.SpringApplication;
 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 
 6 /**
 7  * @date 2018/5/28
 8  */
 9 @SpringBootApplication
10 public class MotanClientAplication {
11     public static void main(String[] args) {
12         SpringApplication.run(MotanClientAplication.class,args);
13         System.out.println("客户端启动完成......");
14     }
15 }

7.使用步骤

  ① 先在本地启动zookeper

  ② 启动MotanServerAplication.class

  ③ 启动MotanClientAplication.class

测试结果

原文地址:https://www.cnblogs.com/jcjssl/p/9395693.html