ServiceComb support users to define a customized handler and and invoke the handler in handler chain.
Customize a handler by implement Handler interface, for example:
public class MyHandler implements Handler { private static final Logger LOGGER = LoggerFactory.getLogger(MyHandler.class); @Override public void handle(Invocation invocation, AsyncResponse asyncResponse) throws Exception { //code before LOGGER.info("It's my handler! \r\n"); invocation.next(response -> { // code after asyncResponse.handle(response); }); } }
Define handler id
and class
in cse.handler.xml
config
item under resources/config
directory
<config> <handler id="myhandler" class="org.apache.servicecomb.samples.customerhandler.handlers.MyHandler" /> </config>
NOTICE: can use a different name other than cse.handler.xml
, e.g. userDefined.hanlder.xml
Configure customized MyHandler
in microservice.yaml
file along with other handler together
servicecomb: # other configurations omitted handler: chain: Consumer: default: bizkeeper-consumer,loadbalance, myhandler
see Precondition
Start the ServiceComb/Service Center
microservice.yaml
fileservicecomb: service: registry: address: http://127.0.0.1:30100 #service center address
Start the custom-handler-provider service
Start provider service by maven
Compile the source code, and use mvn exec
to execute the main class CustomHandlerProviderMain
.
mvn clean install cd custom-handler-sample/custom-handler-provider/ mvn exec:java -Dexec.mainClass="org.apache.servicecomb.samples.customerhandler.provider.CustomHandlerProviderMain"
Start provider service by IDE
Import the project by InteliJ IDEA or Eclipse, then find main
function CustomHandlerProviderMain
of provider service and RUN
it like any other Java program.
Start the custom-handler-consumer service
Just like how to start custom-handler-provider service. But the main class of custom-handler-consumer service is CustomHandlerCustomerMain
.
cd custom-handler-sample/custom-handler-consumer mvn exec:java -Dexec.mainClass="org.apache.servicecomb.samples.customerhandler.consumer.CustomHandlerCustomerMain"
How to verify On the producer side, the output should contain the following stuffs if the producer starts up successfully:
On the consumer side, you can see the following outputs: