自定义服务调用中间件

参考samples dubbo-go-samples/filter

1. 准备工作

2. 配置指定 Filter

指定filter时可用’,‘分隔

  • Consumer 端

    1. dubbo:
    2. consumer:
    3. filter: echo,token,tps,myCustomFilter # 可指定自定义filter
  • Provider 端

    1. dubbo:
    2. provider:
    3. services:
    4. GreeterProvider:
    5. filter: myCustomFilter,echo,tps

3. 自定义Filter

用户可在代码中自定义 Filter,注册到框架上,并在配置中选择使用。

  1. func init() {
  2. extension.SetFilter("myCustomFilter", NewMyClientFilter)
  3. }
  4. func NewMyClientFilter() filter.Filter {
  5. return &MyClientFilter{}
  6. }
  7. type MyClientFilter struct {
  8. }
  9. func (f *MyClientFilter) Invoke(ctx context.Context, invoker protocol.Invoker, invocation protocol.Invocation) protocol.Result {
  10. fmt.Println("MyClientFilter Invoke is called, method Name = ", invocation.MethodName())
  11. return invoker.Invoke(ctx, invocation)
  12. }
  13. func (f *MyClientFilter) OnResponse(ctx context.Context, result protocol.Result, invoker protocol.Invoker, protocol protocol.Invocation) protocol.Result {
  14. fmt.Println("MyClientFilter OnResponse is called")
  15. return result
  16. }

最后修改 December 16, 2022: Fix check (#1736) (97972c1)