1. Overview
1.1 Plugin name#
- Tars plugin
1.2 Appropriate scenario#
- Protocol conversion, a plugin that converts http protocol requests into the Tars framework protocol
- Service Load Balancing.
1.3 Plugin functionality#
- Converting http protocol requests to Tars framework protocol.
1.4 Plugin code#
- Core Module shenyu-plugin-tars
- Core Class org.apache.shenyu.plugin.tars.TarsPlugin
1.5 Added since which shenyu version#
- 2.3.0
2. How to use plugin
2.1 Plugin-use procedure chart#

2.2 Import pom#
        <dependency>            <groupId>org.apache.shenyu</groupId>            <artifactId>shenyu-spring-boot-starter-client-tars</artifactId>            <version>${shenyu.version}</version>        </dependency>2.3 Configure in the client project#
- Configure the Tars configuration in application.yml.
shenyu:  register:    registerType: http #zookeeper #etcd #nacos #consul    serverLists: http://localhost:9095 #localhost:2181 #http://localhost:2379 #localhost:8848    props:      username: admin      password: 123456  client:    tars:      props:        contextPath: /tars        appName: tars        port: 21715        host: 192.168.41.103 # client IP- Add the @ShenyuTarsServiceand@ShenyuTarsClientand annotation to the interface.
@TarsServant("HelloObj")@ShenyuTarsService(serviceName = "ShenyuExampleServer.ShenyuExampleApp.HelloObj")public class HelloServantImpl implements HelloServant {      @Override    @ShenyuTarsClient("/hello")    public String hello(final int no, final String name) {        return String.format("hello no=%s, name=%s, time=%s", no, name, System.currentTimeMillis());    }}2.4 Enable plugin#
- In shenyu-admin --> BasicConfig --> Plugin --> tarsset Status enabled.

2.5 Config plugin#
2.5.1 Config plugin#

- multiSelectorHandle:Set to enable multiple selector processing, multiple selector processing services can be configured in the selector list.
- multiRuleHandle:Set to multiple rules processing, configure multiple processing rules in the rule list, it is recommended to configure as single rule.
- threadpool:There are five types of business thread pools:- fixed,- eager,- cached,- limitedand- shared. The first 4 types correspond to the thread pools officially provided by dubbo. Let's talk about- shared, as its name implies,- all proxy pluginsshare a- sharedthread pool, the advantage of this is that it can reduce the number of thread pools, thereby reducing memory and improving resource utilization.
- corethreads:The number of core threads in the business thread pool.
- threads:The maximum number of threads in the business thread pool.
- queues:The length of the blocking queue of the business thread pool, 0 means- unbounded blocking queue.
2.5.2 Selector config#
Flow needs to be matched by selector.

Automatically configure the selectors with the @ShenyuTarsClient annotation.
2.5.3 Rule Config#
After the traffic has been successfully matched by the selector, it will enter the rules for the final traffic matching.

Automatically configure the rules with the @ShenyuTarsClient annotation.
2.5.4 Metadata config#
When the
Tarsapplication client accesses theApache ShenYugateway, it will be automatically registered, and can be viewed in theshenyu-adminbackend management system's basic configuration-->metadata management, eachTarsinterface method, will correspond to a metadata.

- AppName: specifies the name of the application to which the metadata belongs. 
- MethodName: the name of the method to call. 
- Path: http request path. 
- PathDescribe: the description of the path is easy to view. 
- ParamsType: the parameters are separated by commas (,) in the order of interface parameter types. 
- RpcExpand: other configurations of the - Tarsinterface, which support the- JSONformat.- examples: - {"loadbalance":"hash","retries":3,"timeout":-1}- loadbalance:Load balancing policy, currently supports roundRobin, random and hash.
- retries:Number of retries to call client timeout failures.
- timeout:Calling the client's timeout time.
 
- Interface: The fully qualified class name of the - Tarsinterface.
- RpcType:Auto-registration defaults to - Tars.
2.6 Examples#
2.6.1 Using ShenYu to access the Tars service#
2.6.1.1 Preparation#
- Start ShenYu Admin.
- Start Shenyu Bootstrap.
2.6.1.2 Plugin Config#
- In shenyu-admin --> BasicConfig --> Plugin --> tarsset Status enabled, And adjust the registry configuration as needed.
- Adjust to the actual situation shenyu-examples-tars application.yml configuration in the project and start it.
2.6.2.6 Request service and check result#

3. How to disable plugin
- In shenyu-admin--> BasicConfig --> Plugin -->tarsset Status disable.
