提交 a29ff9de 编写于 作者: 武汉红喜's avatar 武汉红喜

remove whatsmars-rpc-grpc

上级 80559676
# RPC
Transport & Protocol & Serialization
\ No newline at end of file
Transport & Protocol & Serialization
- [《Netty权威指南》](http://e.jd.com/30186249.html) `e.jd.com`
- [开发者如何玩转 RocketMQ?附最全源码解读 【Remoting篇】](https://blog.csdn.net/javahongxi/article/details/86628470)
- https://github.com/javahongxi/grpc-spring-boot-starter
\ No newline at end of file
......@@ -18,7 +18,6 @@
<modules>
<module>whatsmars-remoting</module>
<module>whatsmars-serialization</module>
<module>whatsmars-rpc-grpc</module>
<module>whatsmars-logging</module>
</modules>
......
Netty is an asynchronous event-driven network application framework
for rapid development of maintainable high performance protocol servers & clients.
- [《Netty权威指南》](http://e.jd.com/30186249.html) `e.jd.com`
- [开发者如何玩转 RocketMQ?附最全源码解读 【Remoting篇】](https://blog.csdn.net/javahongxi/article/details/86628470)
\ No newline at end of file
若mvn compile时发生protobuf相关错误,请先执行mvn clean
https://github.com/javahongxi/grpc-spring-boot-starter
\ No newline at end of file
<?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>
<parent>
<artifactId>whatsmars-rpc</artifactId>
<groupId>org.hongxi</groupId>
<version>Rocket.S4</version>
</parent>
<artifactId>whatsmars-rpc-grpc</artifactId>
<packaging>jar</packaging>
<name>${project.artifactId}</name>
<description>Grpc demo</description>
<properties>
<grpc.version>1.15.1</grpc.version>
</properties>
<dependencies>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty</artifactId>
<version>${grpc.version}</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>${grpc.version}</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<version>${grpc.version}</version>
</dependency>
</dependencies>
<build>
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>1.5.0.Final</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.5.0</version>
<configuration>
<protocArtifact>com.google.protobuf:protoc:3.0.0:exe:${os.detected.classifier}</protocArtifact>
<pluginId>grpc-java</pluginId>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.0.0:exe:${os.detected.classifier}</pluginArtifact>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>compile-custom</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
package org.hongxi.whatsmars.rpc.grpc.client;
import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder;
import org.hongxi.whatsmars.rpc.grpc.service.HelloServiceGrpc;
import org.hongxi.whatsmars.rpc.grpc.service.HelloRequest;
import org.hongxi.whatsmars.rpc.grpc.service.HelloResponse;
import java.util.concurrent.TimeUnit;
/**
* Created by shenhongxi on 2017/5/5.
*/
public class HelloWorldClient {
private final ManagedChannel channel;
private final HelloServiceGrpc.HelloServiceBlockingStub blockingStub;
public HelloWorldClient(String host,int port){
channel = ManagedChannelBuilder.forAddress(host, port)
.usePlaintext(true)
.build();
blockingStub = HelloServiceGrpc.newBlockingStub(channel);
}
public void shutdown() throws InterruptedException {
channel.shutdown().awaitTermination(5, TimeUnit.SECONDS);
}
public void greet(String name){
HelloRequest request = HelloRequest.newBuilder().setName(name).build();
HelloResponse response = blockingStub.sayHello(request);
System.out.println(response.getMessage());
}
public static void main(String[] args) throws InterruptedException {
HelloWorldClient client = new HelloWorldClient("127.0.0.1", 50051);
for(int i = 0; i < 5; i++) {
client.greet("world:" + i);
}
client.shutdown();
}
}
package org.hongxi.whatsmars.rpc.grpc.server;
import io.grpc.Server;
import io.grpc.ServerBuilder;
import io.grpc.stub.StreamObserver;
import org.hongxi.whatsmars.rpc.grpc.service.HelloServiceGrpc;
import org.hongxi.whatsmars.rpc.grpc.service.HelloRequest;
import org.hongxi.whatsmars.rpc.grpc.service.HelloResponse;
import java.io.IOException;
/**
* Created by shenhongxi on 2017/5/5.
*/
public class HelloWorldServer {
private int port = 50051;
private Server server;
private void start() throws IOException {
server = ServerBuilder.forPort(port)
.addService(new HelloServiceImpl())
.build()
.start();
System.out.println("service start...");
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
System.err.println("*** shutting down gRPC server since JVM is shutting down");
HelloWorldServer.this.stop();
System.err.println("*** server shut down");
}
});
}
private void stop() {
if (server != null) {
server.shutdown();
}
}
// block 一直到退出程序
private void blockUntilShutdown() throws InterruptedException {
if (server != null) {
server.awaitTermination();
}
}
public static void main(String[] args) throws IOException, InterruptedException {
final HelloWorldServer server = new HelloWorldServer();
server.start();
server.blockUntilShutdown();
}
// 实现 定义一个实现服务接口的类
private class HelloServiceImpl extends HelloServiceGrpc.HelloServiceImplBase {
public void sayHello(HelloRequest req, StreamObserver<HelloResponse> responseObserver) {
System.out.println("service:" + req.getName());
HelloResponse response = HelloResponse.newBuilder().setMessage(("Hello: " + req.getName())).build();
responseObserver.onNext(response);
responseObserver.onCompleted();
}
}
}
syntax = "proto3";
option java_multiple_files = true;
option java_package = "org.hongxi.whatsmars.rpc.grpc.service";
option java_outer_classname = "HelloWorldProto";
option objc_class_prefix = "HLW";
package helloworld;
// The greeting service definition.
service HelloService {
// Sends a greeting
rpc sayHello (HelloRequest) returns (HelloResponse) {}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloResponse {
string message = 1;
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册