自定义服务调用中间件
参考samples dubbo-go-samples/filter
1. 准备工作
- dubbo-go cli 工具和依赖工具已安装
- 阅读【组件加载与可扩展性】
- 创建一个新的 demo 应用
2. 配置指定 Filter
指定filter时可用’,‘分隔
Consumer 端
dubbo: consumer: filter: echo,token,tps,myCustomFilter # 可指定自定义filter
Provider 端
dubbo: provider: services: GreeterProvider: filter: myCustomFilter,echo,tps
3. 自定义Filter
用户可在代码中自定义 Filter,注册到框架上,并在配置中选择使用。
func init() {
extension.SetFilter("myCustomFilter", NewMyClientFilter)
}
func NewMyClientFilter() filter.Filter {
return &MyClientFilter{}
}
type MyClientFilter struct {
}
func (f *MyClientFilter) Invoke(ctx context.Context, invoker protocol.Invoker, invocation protocol.Invocation) protocol.Result {
fmt.Println("MyClientFilter Invoke is called, method Name = ", invocation.MethodName())
return invoker.Invoke(ctx, invocation)
}
func (f *MyClientFilter) OnResponse(ctx context.Context, result protocol.Result, invoker protocol.Invoker, protocol protocol.Invocation) protocol.Result {
fmt.Println("MyClientFilter OnResponse is called")
return result
}
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
最后修改 January 2, 2023: docs:quickstart_triple_with_customize (#1790) (2d2ea68)