Package com.rabbitmq.tools.jsonrpc
Class JsonRpcServer
- java.lang.Object
-
- com.rabbitmq.client.RpcServer
-
- com.rabbitmq.client.StringRpcServer
-
- com.rabbitmq.tools.jsonrpc.JsonRpcServer
-
public class JsonRpcServer extends StringRpcServer
JSON-RPC Server class.Given a Java
Class
, representing an interface, and an implementation of that interface, JsonRpcServer will reflect on the class to construct theServiceDescription
, and will route incoming requests for methods on the interface to the implementation object while the mainloop() is running.JsonRpcServer
delegates JSON parsing and generating to aJsonRpcMapper
.- See Also:
RpcServer
,JsonRpcClient
,JsonRpcMapper
,JacksonJsonRpcMapper
-
-
Field Summary
-
Fields inherited from class com.rabbitmq.client.StringRpcServer
STRING_ENCODING
-
-
Constructor Summary
Constructors Constructor Description JsonRpcServer(Channel channel, Class<?> interfaceClass, Object interfaceInstance)
Construct a server that talks to the outside world using the given channel, and constructs a fresh temporary queue.JsonRpcServer(Channel channel, Class<?> interfaceClass, Object interfaceInstance, JsonRpcMapper mapper)
JsonRpcServer(Channel channel, String queueName, Class<?> interfaceClass, Object interfaceInstance)
Construct a server that talks to the outside world using the given channel and queue name.JsonRpcServer(Channel channel, String queueName, Class<?> interfaceClass, Object interfaceInstance, JsonRpcMapper mapper)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description String
doCall(String requestBody)
Runs a single JSON-RPC request.ServiceDescription
getServiceDescription()
Public API - gets the service description record that this service built from interfaceClass at construction time.String
handleStringCall(String requestBody, AMQP.BasicProperties replyProperties)
Override our superclass' method, dispatching to doCall.Method
matchingMethod(String methodName, Object[] params)
Retrieves the best matching method for the given method name and parameters.-
Methods inherited from class com.rabbitmq.client.StringRpcServer
handleCall, handleCast, handleStringCall, handleStringCast
-
Methods inherited from class com.rabbitmq.client.RpcServer
close, getChannel, getQueueName, handleCall, handleCall, handleCast, handleCast, mainloop, postprocessReplyProperties, preprocessReplyProperties, processRequest, setupConsumer, terminateMainloop
-
-
-
-
Constructor Detail
-
JsonRpcServer
public JsonRpcServer(Channel channel, Class<?> interfaceClass, Object interfaceInstance, JsonRpcMapper mapper) throws IOException
- Throws:
IOException
-
JsonRpcServer
public JsonRpcServer(Channel channel, Class<?> interfaceClass, Object interfaceInstance) throws IOException
Construct a server that talks to the outside world using the given channel, and constructs a fresh temporary queue. Use getQueueName() to discover the created queue name.- Parameters:
channel
- AMQP channel to useinterfaceClass
- Java interface that this server is exposing to the worldinterfaceInstance
- Java instance (of interfaceClass) that is being exposed- Throws:
IOException
- if something goes wrong during an AMQP operation
-
JsonRpcServer
public JsonRpcServer(Channel channel, String queueName, Class<?> interfaceClass, Object interfaceInstance, JsonRpcMapper mapper) throws IOException
- Throws:
IOException
-
JsonRpcServer
public JsonRpcServer(Channel channel, String queueName, Class<?> interfaceClass, Object interfaceInstance) throws IOException
Construct a server that talks to the outside world using the given channel and queue name. Our superclass, RpcServer, expects the queue to exist at the time of construction.- Parameters:
channel
- AMQP channel to usequeueName
- AMQP queue name to listen for requests oninterfaceClass
- Java interface that this server is exposing to the worldinterfaceInstance
- Java instance (of interfaceClass) that is being exposed- Throws:
IOException
- if something goes wrong during an AMQP operation
-
-
Method Detail
-
handleStringCall
public String handleStringCall(String requestBody, AMQP.BasicProperties replyProperties)
Override our superclass' method, dispatching to doCall.- Overrides:
handleStringCall
in classStringRpcServer
-
doCall
public String doCall(String requestBody)
Runs a single JSON-RPC request.- Parameters:
requestBody
- the JSON-RPC request string (a JSON encoded value)- Returns:
- a JSON-RPC response string (a JSON encoded value)
-
matchingMethod
public Method matchingMethod(String methodName, Object[] params)
Retrieves the best matching method for the given method name and parameters.Subclasses may override this if they have specialised dispatching requirements, so long as they continue to honour their ServiceDescription.
-
getServiceDescription
public ServiceDescription getServiceDescription()
Public API - gets the service description record that this service built from interfaceClass at construction time.
-
-