This document introduces how to apply SOFARPC for service publishing and reference. This example will simulate a server locally to listen to a port and publish a service, and the client will reference the service for direct call.
You can get the code sample of this document by clicking here.
Create a project
You need to install JDK 6 or above and Maven 3 or above.
Create a new Maven project and introduce SOFARPC dependency.
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>sofa-rpc-all</artifactId>
<version>latest version</version>
</dependency>
Note: The latest version can be found at https://github.com/sofastack/sofa-rpc/releases.
Write a server implementation
Step 1: Create interface
/**
* Quick Start demo interface
*/
public interface HelloService {
String sayHello(String string);
}
Step 2: Create interface implementation
/**
* Quick Start demo implement
*/
public class HelloServiceImpl implements HelloService {
@Override
public String sayHello(String string {
System.out.println("Server receive: " + string);
return "hello " + string + " !";
}
}
Step 3: Write the server code
/**
* Quick Start Server
*/
public class QuickStartServer {
public static void main(String[] args) {
ServerConfig serverConfig = new ServerConfig()
.setProtocol("bolt") // Set a protocol, which is bolt by default
.setPort(12200) // set a port, which is 12200 by default
.setDaemon(false); // non-daemon thread
ProviderConfig<HelloService> providerConfig = new ProviderConfig<HelloService>()
.setInterfaceId(HelloService.class.getName()) // Specify the interface
.setRef(new HelloServiceImpl()) // Specify the implementation
.setServer(serverConfig); // Specify the server
providerConfig.export (); // Publish service
}
}
Write a client implementation
Step 1: Get the server interface
In general, the server provides the interface class to the client in the form of jar
. In this example, this step is skipped since the server and client are in the same project.
Step 2: Write the client code
/**
* Quick Start client
*/
public class QuickStartClient {
public static void main(String[] args) {
ConsumerConfig<HelloService> consumerConfig = new ConsumerConfig<HelloService>()
.setInterfaceId(HelloService.class.getName()) // Specify the interface
.setProtocol("bolt") // Specify the protocol.setDirectUrl
.setDirectUrl("bolt://127.0.0.1:12200"); // Specify the direct connection address
// Generate the proxy class
HelloService helloService = consumerConfig.refer();
while (true) {
System.out.println(helloService.sayHello("world"));
try {
Thread.sleep(2000);
} catch (Exception e) {
}
}
}
}
Run
Start the server and client separately.
The server outputs:
Server receive: The world
The client outputs:
hello world !
More
For more examples, please refer to: example