First, implement the filter interface 1, Consumer filter: Consumertracefilter.java
PackageCom.dubbo.demo.Filter;ImportCom.alibaba.dubbo.rpc.*;ImportJava.util.Map;ImportJava.util.UUID; Public classConsumertracefilterImplementsFilter {@Override PublicResult Invoke (invoker<?> Invoker, invocation invocation)throwsrpcexception {Map<string, string> stringstringmap =invocation.getattachments (); //Setting ParametersStringstringmap.put ("Patentid", "0"); Stringstringmap.put ("Traceid", Uuid.randomuuid (). toString ()); System.out.println ("Generate TradeID:" +stringstringmap.get ("Traceid")); returnInvoker.invoke (invocation); }}
2, producer filter: Providertracefilter.java
PackageCom.dubbo.demo.Filter;ImportCom.alibaba.dubbo.rpc.*;ImportJava.util.Map; Public classProvidertracefilterImplementsFilter { PublicResult Invoke (invoker<?> Invoker, invocation invocation)throwsrpcexception {Map<string, string> stringstringmap =invocation.getattachments (); //Receive ParametersSystem.out.println ("Received: Patentid:" +stringstringmap.get ("Patentid")); System.out.println ("Received: TradeID:" +stringstringmap.get ("Traceid")); returnInvoker.invoke (invocation); }}
Ii. Configuring the SPI Filter extension file 1, producer configuration
In directory: resources/meta-inf/dubbo/create com.alibaba.dubbo.rpc.Filter (plain text file,. txt)
Content:
Tracefilter=com.dubbo.demo.filter.providertracefilter
2. Consumer Configuration
In directory: resources/meta-inf/dubbo/create com.alibaba.dubbo.rpc.Filter (plain text file,. txt)
Content:
Tracefilter=com.dubbo.demo.filter.consumertracefilter
Iii. configuration Dubbo file 1, producer
<?XML version= "1.0" encoding= "UTF-8"?><Beansxmlns= "Http://www.springframework.org/schema/beans"Xmlns:xsi= "Http://www.w3.org/2001/XMLSchema-instance"Xmlns:dubbo= "Http://code.alibabatech.com/schema/dubbo"xsi:schemalocation= "Http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd Http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <!--Filter Configuration - < Dubbo:provider Filter = "Tracefilter" />
<!--Dubbo Application Naming - <dubbo:applicationname= "Dubbo-demo-provider"/> <!--Dubbo Registered Address - <Dubbo:registryAddress= "zookeeper://192.168.1.100:2181"/> <!--Dubbo Protocol Address - <Dubbo:protocolname= "Dubbo"Port= "20880"/> <!--Interface Declaration - <Dubbo:serviceInterface= "Com.dubbo.demo.api.DemoRpcService"ref= "Demorpcservice"/> <BeanID= "Demorpcservice"class= "Com.dubbo.demo.DemoRpcServiceImpl"/> </Beans>
2. Consumers
<?XML version= "1.0" encoding= "UTF-8"?><Beansxmlns= "Http://www.springframework.org/schema/beans"Xmlns:xsi= "Http://www.w3.org/2001/XMLSchema-instance"Xmlns:dubbo= "Http://code.alibabatech.com/schema/dubbo"xsi:schemalocation= "Http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd Http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <!--Filter Configuration - <Dubbo:consumerFilter= "Tracefilter" /> <!--Dubbo Application Naming - <dubbo:applicationname= "Dubbo-demo-provider"/> <!--Dubbo Registered Address - <Dubbo:registryAddress= "zookeeper://192.168.1.100:2181"/> <!--Interface Reference - <dubbo:referenceInterface= "Com.dubbo.demo.api.DemoRpcService"ID= "Demorpcservice"/></Beans>
Iv. Verification
Start the producer, the consumer initiates the remote call
Example code:
Https://github.com/Star-Lordxing/dubbo-demo
Dubbo Series VI, SPI extension filter implicit parameter