Get the App
SLTechnology News&Howtos  ›  Servers  › 

How to realize the SocketD Protocol single Link two-way RPC Mode

Shulou Source: shulou.com Published: 2022-05-31 17:51:52 09月16日 Update

This article introduces the relevant knowledge of "how to realize the SocketD protocol single-link two-way RPC mode". In the operation of the actual case, many people will encounter such a dilemma, so let the editor lead you to learn how to deal with these situations. I hope you can read it carefully and be able to achieve something!

SocketD is a binary point-to-point communication protocol and a new network communication layer 7 protocol. Designed to be used in distributed applications. In this sense, SocketD can be an alternative to other similar protocols such as RSocket. Its message protocol specification has the characteristics of asynchronism, two-way back pressure, multiplexing, disconnection reconnection, message-based and so on. Only Java implementation is provided for the time being, and it is currently used as the sockte channel protocol for Solon rpc.

This case takes the single-link two-way RPC mode as an example: (add server reverse interface calls on the basis of RPC invocation pattern)

Interface definition

The Rpc mode borrows Nami as the client definition (Nami is a Solon companion framework and is positioned as a Rpc general client)

@ NamiClient ("demo:/demoe/rpc") public interface HelloService {String hello (String name);} @ NamiClient ("demo:/demoe/rpc/name") public interface NameService {String name (String name);} server / / launch server public class ServerApp {public static void main (String [] args) {/ / launch Solon container (SocketD bean&plugin is managed by solon container) Solon.start (ServerApp.class, args, app-> app.enableSocketD (true)) }} / / define remote service component (for client to call) @ Mapping (value = "/ demoe/rpc", method = MethodType.SOCKET) @ Component (remoting = true) public class HelloServiceImpl implements HelloService {public String hello (String name) {/ / [server] reverse call [client] remote service component * * NameService rpc = SocketD.create (Context.current (), NameService.class); name = rpc.name (name) Return "name=" + name;} client / / launch client public class ClientApp {public static void main (String [] args) throws Throwable {/ / launch Solon container (SocketD bean&plugin is managed by solon container) Solon.start (ClientApp.class, args) / / [client] calls rpc / / HelloService rpc = SocketD.create ("tcp://localhost:28080", HelloService.class) of [server]; System.out.println ("RPC result:" + rpc.hello ("noear")) }} / / define remote service components (for server invocation) @ Mapping (value = "/ demoe/rpc/name", method = MethodType.SOCKET) @ Component (remoting = true) public class NameServiceImpl implements NameService {@ Override public String name (String name) {return name + "2";}} "how to implement the SocketD protocol single-link bidirectional RPC mode" ends here. Thank you for reading. If you want to know more about the industry, you can follow the website, the editor will output more high-quality practical articles for you!

Tags: Services customers clients patterns bidirectional containers links components content interfaces more messages knowledge management communication practical successful learning and then binary distributed Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Redmi Xiaomi Apple Docker Shulou Information