最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

dubbo3 filter(過濾器)如何自定義過濾器

 更新時間:2025年03月06日 14:28:36   作者:帥氣的人123  
dubbo3filter(過濾器)類似于javaweb中的filter和springmvc中的intercaptor,用于在請求發(fā)送前或到達前進行預處理工作,完成限流和監(jiān)控,在dubbo中,過濾器運行在consumer和provider兩端,分別在調用鏈中執(zhí)行

dubbo3 filter(過濾器)

簡介

  1. 類似于 java web 中的 filter
  2. 也和 spring mvc 中的 intercaptor
  3. 在請求的發(fā)送后或者是請求到達前集中的做一些預處理工作
  4. 在 dubbo 中也會通過過濾器來完成限流和監(jiān)控的工作

dubbo 過濾器運行時機

consumer 在調用的時候負載均衡已經選擇了一個具體的實例進行調用,那么會依次執(zhí)行 conusmer 端端調用鏈(調用鏈是 filter),然后到達 provider ,會繼續(xù)執(zhí)行 provider 的調用鏈(這里是 filter),完成響應的時候也會依次調用這些鏈

自定義 filter

在 dubbo 中自定義 filter 可以有兩種方式。

第一種 @Active 注解激活

在項目目錄下面創(chuàng)建文件夾 META-INF/dubbo 下面創(chuàng)建 filter 的權限定類名,(org.apache.dubbo.rpc.Filter),然后在文件內部寫入我們的注冊信息,名字=自定義 filter 的權限定類名,注冊成功以后需要激活我們的配置,@Activate(group = CommonConstants.PROVIDER)

myProviderFilter=com.rpc.dubbo.provider.filter.MyProviderFilter

代碼:

package com.rpc.dubbo.provider.filter;

import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.common.constants.CommonConstants;
import org.apache.dubbo.common.extension.Activate;
import org.apache.dubbo.rpc.*;

/**
 * @author xl-9527
 * @since 2025/1/11
 **/
@Slf4j
@Activate(group = CommonConstants.PROVIDER) // active 中 group 的設置是表示他運行在 consumer 還是 provider 端,這是必須要要配置的
public class MyProviderFilter implements Filter {

    /**
     * @param invoker    實際這次的調用
     * @param invocation 本次調用的參數
     * @return 調用結果,這里的調用結果是從 provider 端調用過來的
     */
    @Override
    public Result invoke(final Invoker<?> invoker, final Invocation invocation) throws RpcException {
        System.out.println("invoker.getUrl() = " + invoker.getUrl());
        System.out.println("invocation.getMethodName() = " + invocation.getMethodName());
        System.out.println("invocation.getServiceModel().getServiceName() = " + invocation.getServiceModel().getServiceName());
        log.info("MyProviderFilter invoke");
        return invoker.invoke(invocation);
    }
}

第二種使用 @DubboService(filter=“key”)

這種方式需要直接在 service 中配置我們在 SPI 中設置的 key

例如我們剛剛設置的 myProviderFilter(這里的源碼服用了第一種里面的)

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Gradle構建基本的Web項目結構

    Gradle構建基本的Web項目結構

    這篇文章主要為大家介紹了Gradle創(chuàng)建Web項目基本的框架結構搭建,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • 詳解Java中的final關鍵字

    詳解Java中的final關鍵字

    子類可以在父類的基礎上改寫父類內容,為了避免這種隨意改寫的情況,Java提供了final 關鍵字,用于修飾不可改變內容。本文就來詳細說說final關鍵字的使用,需要的可以參考一下
    2022-10-10
  • 解決執(zhí)行maven命令時提示Process terminated的問題

    解決執(zhí)行maven命令時提示Process terminated的問題

    這篇文章主要介紹了解決執(zhí)行maven命令時提示Process terminated的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • spring-data-jpa使用自定義repository來實現原生sql

    spring-data-jpa使用自定義repository來實現原生sql

    這篇文章主要介紹了在spring-data-jpa中使用自定義repository來實現原生sql,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • springboot整合xxl-job的示例代碼

    springboot整合xxl-job的示例代碼

    這篇文章主要介紹了springboot整合xxl-job的示例代碼,主要分為三大模塊,分別是調度中心、執(zhí)行器和配置定時任務的過程,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • Java Web過濾器詳解

    Java Web過濾器詳解

    這篇文章主要為大家詳細介紹了Java WEB過濾器的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 舉例解析Java多線程編程中需要注意的一些關鍵點

    舉例解析Java多線程編程中需要注意的一些關鍵點

    這篇文章主要介紹了Java多線程編程中需要注意的一些關鍵點,包括ThreadLocal變量與原子更新等一些深層次的內容,需要的朋友可以參考下
    2015-11-11
  • JAVA 多態(tài) 由淺及深介紹

    JAVA 多態(tài) 由淺及深介紹

    JAVA 多態(tài) 由淺及深介紹,什么是多態(tài)?多態(tài)的詳細解釋,多態(tài)的好處,多態(tài)的實際運用等
    2013-03-03
  • SpringBoot在自定義類中調用service層mapper層方式

    SpringBoot在自定義類中調用service層mapper層方式

    這篇文章主要介紹了SpringBoot在自定義類中調用service層mapper層方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • java實現簡單的學生信息管理系統(tǒng)代碼實例

    java實現簡單的學生信息管理系統(tǒng)代碼實例

    這篇文章主要介紹了java實現簡單的學生信息管理系統(tǒng),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04

最新評論

连江县| 三原县| 舞阳县| 玛多县| 西青区| 湖南省| 永德县| 苏尼特右旗| 沐川县| 石狮市| 清河县| 安西县| 蓬溪县| 英吉沙县| 河池市| 富裕县| 罗田县| 钟祥市| 皋兰县| 牡丹江市| 衡阳县| 堆龙德庆县| 华亭县| 衡南县| 武宣县| 上高县| 沂南县| 固安县| 大冶市| 博爱县| 都江堰市| 广安市| 奎屯市| 抚远县| 如东县| 平江县| 三穗县| 和平县| 新龙县| 渭源县| 宽甸|