blob: 3860abe87ca1494a03f22605d48509f7198fc857 [file] [log] [blame] [view]
## Customized Handler Sample
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:
```java
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
```xml
<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
```yaml
servicecomb:
# other configurations omitted
handler:
chain:
Consumer:
default: bizkeeper-consumer,loadbalance, myhandler
```
## Sample Quick Start
1. Start the ServiceComb/Service Center
- [how to start the service center](http://servicecomb.apache.org/docs/products/service-center/install/)
- make sure service center address is configured correctly in `microservice.yaml` file
```yaml
servicecomb:
service:
registry:
address: http://127.0.0.1:30100 #service center address
```
2. 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`.
```bash
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.
3. 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`.
```bash
cd custom-handler-sample/custom-handler-consumer
mvn exec:java -Dexec.mainClass="org.apache.servicecomb.samples.customerhandler.consumer.CustomHandlerCustomerMain"
```
4. How to verify
On the producer side, the output should contain the following stuffs if the producer starts up successfully:
1. *'swagger: 2.0 info: version: 1.0.0 ...'* means the producer generated swagger contracts
2. *'rest listen success. address=0.0.0.0:8080'* means the rest endpoint is listening on port 8080
On the consumer side, you can see the following outputs:
1. *'It's my handler!'* means custom handler had take effect