久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

SpringRetry重試框架的具體使用

瀏覽:3日期:2023-06-29 15:44:46
目錄一、環境搭建二、RetryTemplate2.1 RetryTemplate2.2 RetryListener2.3 回退策略2.3.1 FixedBackOffPolicy2.3.2 ExponentialBackOffPolicy2.4 重試策略2.5 RetryCallback2.6 核心使用三、EnableRetry四、Retryable

spring retry主要實現了重試和熔斷。

不適合重試的場景:

參數校驗不合法、寫操作等(要考慮寫是否冪等)都不適合重試。

適合重試的場景:

遠程調用超時、網絡突然中斷等可以重試。

在spring retry中可以指定需要重試的異常類型,并設置每次重試的間隔以及如果重試失敗是繼續重試還是熔斷(停止重試)。

一、環境搭建

加入SpringRetry依賴,SpringRetry使用AOP實現,所以也需要加入AOP包

<!-- SpringRetry --><dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId></dependency>

官方文檔

二、RetryTemplate2.1 RetryTemplate RetryTemplate封裝了Retry基本操作 org.springframework.retry.support.RetryTemplate RetryTemplate中可以指定監聽、回退策略、重試策略等 只需要正常new RetryTemplate()即可使用2.2 RetryListener

RetryListener指定了當執行過程中出現錯誤時的回調

org.springframework.retry.RetryListener

package org.springframework.retry;public interface RetryListener { /** * 任務開始執行時調用,只調用一次 */ <T, E extends Throwable> boolean open(RetryContext context, RetryCallback<T, E> callback); /** * 任務執行結束時(包含重試)調用,只調用一次 */ <T, E extends Throwable> void close(RetryContext context, RetryCallback<T, E> callback, Throwable throwable); /** * 出現錯誤時回調 */ <T, E extends Throwable> void onError(RetryContext context, RetryCallback<T, E> callback, Throwable throwable);}

配置之后在RetryTemplate中指定

2.3 回退策略2.3.1 FixedBackOffPolicy

當出現錯誤時延遲多少時間繼續調用

FixedBackOffPolicy fixedBackOffPolicy = new FixedBackOffPolicy();fixedBackOffPolicy.setBackOffPeriod(1000L);retryTemplate.setBackOffPolicy(fixedBackOffPolicy);

配置之后在RetryTemplate中指定

2.3.2 ExponentialBackOffPolicy

當出現錯誤時第一次按照指定延遲時間延遲后按照指數進行延遲

// 指數回退(秒),第一次回退1s,第二次回退2s,第三次4秒,第四次8秒ExponentialBackOffPolicy exponentialBackOffPolicy = new ExponentialBackOffPolicy();exponentialBackOffPolicy.setInitialInterval(1000L);exponentialBackOffPolicy.setMultiplier(2);retryTemplate.setBackOffPolicy(exponentialBackOffPolicy);

配置之后在RetryTemplate中指定

2.4 重試策略

重試策略主要指定出現錯誤時重試次數

// 重試策略SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();retryPolicy.setMaxAttempts(5);retryTemplate.setRetryPolicy(retryPolicy);

配置之后在RetryTemplate中指定

2.5 RetryCallback

RetryCallback為retryTemplate.execute時執行的回調

public final <T, E extends Throwable> T execute(RetryCallback<T, E> retryCallback) throws E

SpringRetry重試框架的具體使用

2.6 核心使用

可以使用RetryTemplate完成簡單使用配置retryTemplate

指定回退策略為ExponentialBackOffPolicy 指定重試策略為SimpleRetryPolicy 指定監聽器RetryListener

import com.codecoord.util.PrintUtil;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.retry.RetryCallback;import org.springframework.retry.RetryContext;import org.springframework.retry.RetryListener;import org.springframework.retry.backoff.ExponentialBackOffPolicy;import org.springframework.retry.policy.SimpleRetryPolicy;import org.springframework.retry.support.RetryTemplate;@Configurationpublic class RetryTemplateConfig { /** * 注入retryTemplate */ @Bean public RetryTemplate retryTemplate() {RetryTemplate retryTemplate = new RetryTemplate();/// 回退固定時間(秒) /* FixedBackOffPolicy fixedBackOffPolicy = new FixedBackOffPolicy();fixedBackOffPolicy.setBackOffPeriod(1000L);retryTemplate.setBackOffPolicy(fixedBackOffPolicy);*/// 指數回退(秒),第一次回退1s,第二次回退2sExponentialBackOffPolicy exponentialBackOffPolicy = new ExponentialBackOffPolicy();exponentialBackOffPolicy.setInitialInterval(1000L);exponentialBackOffPolicy.setMultiplier(2);retryTemplate.setBackOffPolicy(exponentialBackOffPolicy);// 重試策略SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();retryPolicy.setMaxAttempts(5);retryTemplate.setRetryPolicy(retryPolicy);// 設置監聽器,open和close分別在啟動和結束時執行一次RetryListener[] listeners = {new RetryListener() { @Override public <T, E extends Throwable> boolean open(RetryContext context, RetryCallback<T, E> callback) {PrintUtil.print('open');return true; } @Override public <T, E extends Throwable> void close(RetryContext context, RetryCallback<T, E> callback, Throwable throwable) {PrintUtil.print('close'); } @Override public <T, E extends Throwable> void onError(RetryContext context, RetryCallback<T, E> callback, Throwable throwable) {PrintUtil.print('onError'); }}};retryTemplate.setListeners(listeners);return retryTemplate; }}

在controller中注入RetryTemplate使用,也可以是在service中

@RestControllerpublic class SpringRetryController { @Resource private RetryTemplate retryTemplate; private static int count = 0; @RequestMapping('/retry') public Object retry() {try { count = 0; retryTemplate.execute((RetryCallback<Void, RuntimeException>) context -> {// 業務代碼// ....// 模擬拋出異常++count;throw new RuntimeException('拋出異常'); });} catch (RuntimeException e) { System.out.println('Exception');}return 'retry = ' + count; }}

訪問retry接口,然后觀察日志輸出

18:27:20.648 - http-nio-8888-exec-1 - open18:27:20.649 - http-nio-8888-exec-1 - retryTemplate.execute執行18:27:20.649 - http-nio-8888-exec-1 - onError18:27:21.658 - http-nio-8888-exec-1 - retryTemplate.execute執行18:27:21.658 - http-nio-8888-exec-1 - onError18:27:23.670 - http-nio-8888-exec-1 - retryTemplate.execute執行18:27:23.670 - http-nio-8888-exec-1 - onError18:27:27.679 - http-nio-8888-exec-1 - retryTemplate.execute執行18:27:27.679 - http-nio-8888-exec-1 - onError18:27:35.681 - http-nio-8888-exec-1 - retryTemplate.execute執行18:27:35.681 - http-nio-8888-exec-1 - onError18:27:35.681 - http-nio-8888-exec-1 - close

三、EnableRetry

@EnableRetry開啟重試,在類上指定的時候方法將默認執行,重試三次定義service,開啟@EnableRetry注解和指定@Retryable,重試可以參考后面一節

import org.springframework.retry.annotation.Retryable;public interface RetryService { /** * 重試方法調用 */ @Retryable void retryServiceCall();}

import org.springframework.retry.annotation.EnableRetry;import org.springframework.stereotype.Service;@EnableRetry@Servicepublic class RetryServiceImpl implements RetryService { @Override public void retryServiceCall() {PrintUtil.print('方法調用..');throw new RuntimeException('手工異常'); }}

controller中注入service

@RequestMapping('/retryAnnotation')public Object retryAnnotation() { retryService.retryServiceCall(); return 'retryAnnotation';}

將會默認重試

18:46:48.721 - http-nio-8888-exec-1 - 方法調用..18:46:49.724 - http-nio-8888-exec-1 - 方法調用..18:46:50.730 - http-nio-8888-exec-1 - 方法調用..java.lang.RuntimeException: 手工異常

四、Retryable

用于需要重試的方法上的注解有以下幾個屬性

Retryable注解參數

value:指定發生的異常進行重試 include:和value一樣,默認空,當exclude也為空時,所有異常都重試 exclude:指定異常不重試,默認空,當include也為空時,所有異常都重試 maxAttemps:重試次數,默認3 backoff:重試補償機制,默認沒有

@Backoff 注解 重試補償策略

不設置參數時,默認使用FixedBackOffPolicy(指定等待時間),重試等待1000ms 設置delay,使用FixedBackOffPolicy(指定等待設置delay和maxDealy時,重試等待在這兩個值之間均態分布) 設置delay、maxDealy、multiplier,使用 ExponentialBackOffPolicy(指數級重試間隔的實現),multiplier即指定延遲倍數,比如delay=5000L,multiplier=2,則第一次重試為5秒,第二次為10秒,第三次為20秒

@Target({ ElementType.METHOD, ElementType.TYPE })@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Retryable { /** * Retry interceptor bean name to be applied for retryable method. Is mutually * exclusive with other attributes. * @return the retry interceptor bean name */ String interceptor() default ''; /** * Exception types that are retryable. Synonym for includes(). Defaults to empty (and * if excludes is also empty all exceptions are retried). * @return exception types to retry */ Class<? extends Throwable>[] value() default {}; /** * Exception types that are retryable. Defaults to empty (and if excludes is also * empty all exceptions are retried). * @return exception types to retry */ Class<? extends Throwable>[] include() default {}; /** * Exception types that are not retryable. Defaults to empty (and if includes is also * empty all exceptions are retried). * If includes is empty but excludes is not, all not excluded exceptions are retried * @return exception types not to retry */ Class<? extends Throwable>[] exclude() default {}; /** * A unique label for statistics reporting. If not provided the caller may choose to * ignore it, or provide a default. * * @return the label for the statistics */ String label() default ''; /** * Flag to say that the retry is stateful: i.e. exceptions are re-thrown, but the * retry policy is applied with the same policy to subsequent invocations with the * same arguments. If false then retryable exceptions are not re-thrown. * @return true if retry is stateful, default false */ boolean stateful() default false; /** * @return the maximum number of attempts (including the first failure), defaults to 3 */ int maxAttempts() default 3; /** * @return an expression evaluated to the maximum number of attempts (including the first failure), defaults to 3 * Overrides {@link #maxAttempts()}. * @date 1.2 */ String maxAttemptsExpression() default ''; /** * Specify the backoff properties for retrying this operation. The default is a * simple {@link Backoff} specification with no properties - see it’s documentation * for defaults. * @return a backoff specification */ Backoff backoff() default @Backoff(); /** * Specify an expression to be evaluated after the {@code SimpleRetryPolicy.canRetry()} * returns true - can be used to conditionally suppress the retry. Only invoked after * an exception is thrown. The root object for the evaluation is the last {@code Throwable}. * Other beans in the context can be referenced. * For example: * <pre class=code> * {@code 'message.contains(’you can retry this’)'}. * </pre> * and * <pre class=code> * {@code '@someBean.shouldRetry(#root)'}. * </pre> * @return the expression. * @date 1.2 */ String exceptionExpression() default ''; /** * Bean names of retry listeners to use instead of default ones defined in Spring context * @return retry listeners bean names */ String[] listeners() default {};}

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Backoff { /** * Synonym for {@link #delay()}. * * @return the delay in milliseconds (default 1000) */ long value() default 1000; /** * A canonical backoff period. Used as an initial value in the exponential case, and * as a minimum value in the uniform case. * @return the initial or canonical backoff period in milliseconds (default 1000) */ long delay() default 0; /** * The maximimum wait (in milliseconds) between retries. If less than the * {@link #delay()} then the default of * {@value org.springframework.retry.backoff.ExponentialBackOffPolicy#DEFAULT_MAX_INTERVAL} * is applied. * * @return the maximum delay between retries (default 0 = ignored) */ long maxDelay() default 0; /** * If positive, then used as a multiplier for generating the next delay for backoff. * * @return a multiplier to use to calculate the next backoff delay (default 0 = * ignored) */ double multiplier() default 0; /** * An expression evaluating to the canonical backoff period. Used as an initial value * in the exponential case, and as a minimum value in the uniform case. Overrides * {@link #delay()}. * @return the initial or canonical backoff period in milliseconds. * @date 1.2 */ String delayExpression() default ''; /** * An expression evaluating to the maximimum wait (in milliseconds) between retries. * If less than the {@link #delay()} then the default of * {@value org.springframework.retry.backoff.ExponentialBackOffPolicy#DEFAULT_MAX_INTERVAL} * is applied. Overrides {@link #maxDelay()} * * @return the maximum delay between retries (default 0 = ignored) * @date 1.2 */ String maxDelayExpression() default ''; /** * Evaluates to a vaule used as a multiplier for generating the next delay for * backoff. Overrides {@link #multiplier()}. * * @return a multiplier expression to use to calculate the next backoff delay (default * 0 = ignored) * @date 1.2 */ String multiplierExpression() default ''; /** * In the exponential case ({@link #multiplier()} &gt; 0) set this to true to have the * backoff delays randomized, so that the maximum delay is multiplier times the * previous delay and the distribution is uniform between the two values. * * @return the flag to signal randomization is required (default false) */ boolean random() default false;}

在需要重試的方法上配置對應的重試次數、重試異常的異常類型、設置回退延遲時間、重試策略、方法監聽名稱

@Componentpublic class PlatformClassService { @Retryable(// 重試異常的異常類型value = {Exception.class},// 最大重試次數maxAttempts = 5,// 設置回退延遲時間backoff = @Backoff(delay = 500),// 配置回調方法名稱listeners = 'retryListener' ) public void call() {System.out.println('call...');throw new RuntimeException('手工異常'); }}

// 初始延遲2秒,然后之后驗收1.5倍延遲重試,總重試次數4@Retryable(value = {Exception.class}, maxAttempts = 4, backoff = @Backoff(delay = 2000L, multiplier = 1.5))

監聽方法,在配置類中進行配置

/** * 注解調用 */@Beanpublic RetryListener retryListener() { return new RetryListener() {@Overridepublic <T, E extends Throwable> boolean open(RetryContext context, RetryCallback<T, E> callback) { System.out.println('open context = ' + context + ', callback = ' + callback); // 返回true繼續執行后續調用 return true;}@Overridepublic <T, E extends Throwable> void close(RetryContext context, RetryCallback<T, E> callback, Throwable throwable) { System.out.println('close context = ' + context + ', callback = ' + callback);}@Overridepublic <T, E extends Throwable> void onError(RetryContext context, RetryCallback<T, E> callback, Throwable throwable) { System.out.println('onError context = ' + context + ', callback = ' + callback);} };}

調用服務

@RestControllerpublic class SpringRetryController { @Resource private PlatformClassService platformClassService;@RequestMapping('/retryPlatformCall') public Object retryPlatformCall() {try { platformClassService.call();} catch (Exception e) { return '嘗試調用失敗';}return 'retryPlatformCall'; }}

調用結果

SpringRetry重試框架的具體使用

到此這篇關于SpringRetry重試框架的具體使用的文章就介紹到這了,更多相關SpringRetry重試框架內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 天天射天天干 | 狠狠综合久久av一区二区老牛 | 亚洲福利社区 | 国产日韩av在线 | 欧美一区二区三区 | 日批免费视频 | 欧美日韩一二三区 | 日韩精品专区在线影院重磅 | 日韩在线免费电影 | 99视频这里有精品 | 免费在线观看一区二区 | 日韩视频一区二区 | 国产免费拔擦拔擦8x高清在线人 | 亚洲不卡在线 | 日韩视频在线观看 | 久久九| 精品亚洲视频在线 | 日韩国产在线观看 | 精品久久久久久 | 日韩欧美在线播放 | 亚洲综合色自拍一区 | 亚洲精品麻豆 | 精品久久久久久久久久久久久久 | 亚洲美女在线视频 | 国产伦精品久久久一区二区三区 | 国产成人精品免费视频大全最热 | 黄色毛片免费看 | 日韩精品一区二 | 国产精品乱码一二三区的特点 | 久草新免费 | 特级生活片 | 日韩精品在线视频 | 欧美成人二区 | 99久久精品免费看国产四区 | 日本视频二区 | 99爱免费观看 | 毛片久久久 | 久久久精品国产 | 国产色在线 | 91精品国产综合久久福利 | 美女中文字幕视频 | 亚洲国产成人久久 | 国产成人综合网 | 欧美在线视频一区二区 | 福利二区| 国产电影一区二区 | 激情毛片| 亚洲在线一区二区 | 狠狠骚 | 欧美日韩一区二区在线 | 99re在线| 国产精品视频久久久 | 国产精品www | 国产精品一区久久 | 日韩欧美一区二区三区免费观看 | 美女久久久久 | 在线欧美日韩 | 亚洲国产高清高潮精品美女 | 欧美日韩国产在线观看 | 欧美一区二区三区在线视频观看 | 国产精品视频在线观看 | 成人久久久精品乱码一区二区三区 | 日韩欧美三级 | 91精品国产欧美一区二区成人 | 日韩福利在线观看 | 精品久久久一区二区 | www.中文字幕| 日韩中文一区二区 | 精品在线二区 | 国内精品一区二区三区 | 91秦先生艺校小琴 | 北条麻妃国产九九九精品小说 | 久久久久久久国产 | 在线免费黄色小视频 | 亚洲乱码一区二区三区在线观看 | 中文字幕66页| 国产精品久久久久一区二区三区共 | 国产成人在线一区二区 | 男人亚洲天堂网 | 欧洲视频一区二区三区 | 亚洲欧美在线免费 | 国产欧美日韩综合精品 | 禁果av一区二区三区 | 一区影院| 精品视频成人 | 欧美日韩精品在线一区 | 欧美在线一区二区三区 | 免费国产黄 | 美女久久 | 国产精品久久久久久久久免费高清 | 国产欧美精品一区二区色综合朱莉 | 日韩成人国产 | 久国久产久精永久网页 | 91人人| 午夜精品一区二区三区在线观看 | 国产日韩一区二区 | 欧美激情专区 | 亚洲国产区 | 国产亚洲欧美一区 | 成人xxx | 久久久一 | 成人看片在线 | 一道本一区 | 欧美韩国日本一区 | 91精品国产日韩91久久久久久 | av在线免费观看一区二区 | 久久久久久久久久一区二区 | 免费国产一区二区 | 一区二区免费 | 日韩视频国产 | 另类视频在线 | 亚洲aⅴ天堂av在线电影软件 | 在线观看国产高清视频 | 亚洲成人综合网站 | 国产精品久久久久久久久久久久 | 91传媒在线播放 | 精久久久| 男人天堂视频网 | 免费午夜剧场 | 久久久夜 | 婷婷桃色网 | 欧美成人黄激情免费视频 | 日本小视频网站 | 亚洲成人av在线 | 国产视频2021 | 精品国产18久久久久久二百 | 日日干夜夜操 | 自拍小电影 | 欧美美女黄色网 | 综合色婷婷一区二区亚洲欧美国产 | 久久99国产精品久久99大师 | 情一色一乱一欲一区二区 | 视频一区二区三区中文字幕 | 日韩成人在线一区 | 国产情侣一区二区三区 | 久久综合一区二区三区 | 欧美精品在线一区二区三区 | 国产性久久 | 国产精品久久一区二区三区 | 精品无码久久久久久国产 | 久久久中文 | 在线中文 | 伊人久久国产 | 免费v片在线观看 | 中文在线a在线 | 天天夜夜操 | 成年人视频在线观看免费 | 国产精品久久久久久久 | 日韩免费在线视频 | 中文字幕在线免费视频 | 久久av一区二区三区 | 亚洲精品成人 | 91精品综合久久久久久五月天 | 日韩成人精品视频 | 亚洲精品国产综合区久久久久久久 | 不卡日韩在线 | 久久久久久影院 | 日本在线视频中文字幕 | 欧美精品一二三 | 成人精品久久久 | 国产精品人人做人人爽 | 一区二区免费视频 | 国产精品女教师av久久 | 伊人啪啪| 国产在线观看一区 | 亚洲免费视频一区 | 国产午夜精品久久久久久久 | 国产精品一二区 | 一区二区三区视频免费在线观看 | 精品久久久久久久久久久 | 999精品视频 | 久久福利 | 欧美激情小视频 | 成人精品国产 | 日韩精品免费在线观看 | 国产精品美女久久久久久免费 | 亚洲男人天堂av | 国产a√| 欧美成人久久 | 精品中文字幕一区二区三区 | 久久国产精品久久久久久 | 夜夜草视频 | 欧美成年黄网站色视频 | 久草.com | 国产精品久久久久免费 | 免费在线观看毛片网站 | 一区二区日韩欧美 | 国产亚洲精品久久久久久久久 | 超碰人人在线 | 国产精精品 | 精品一区二区三区四区五区 | 欧美日韩精品一区二区在线播放 | 日干夜操 | 男人的天堂中文字幕 | 日韩精品一区二区三区第95 | 成年人精品视频在线观看 | 日本三级在线观看中文字 | 国产精品无码久久久久 | 久久久久久久成人 | 欧美激情国产日韩精品一区18 | 日日撸| 欧美一区二区三区免费 | 99国产精品久久久 | 噜噜噜在线 | 成人片网址 | 欧美精品一区在线发布 | 少妇黄色一级片 | 激情五月婷婷综合 | 日韩欧美一区二区三区 | 天天操网 | 欧美激情网站 | av观看| 精品在线播放 | 91久久国产| 成人免费毛片aaaaaa片 | 久久精品国产清自在天天线 | 中文字字幕一区二区三区四区五区 | 国产在线一级片 | 久久精品二区 | 性一交一乱一透一a级 | 4h影视| 国产福利在线免费 | 亚洲精品电影网在线观看 | 中文字幕 欧美 日韩 | 亚洲精品乱码久久久久久麻豆不卡 | 久久久精品一区 | 99精品久久久 | 天天色天天色 | 国产精品一品二区三区的使用体验 | 国产伦精品一区二区三区四区视频 | 三级视频在线观看 | 亚洲精品一二三 | 欧美成年黄网站色视频 | 免费的日本网站 | 福利二区视频 | 国产精品久久久久毛片软件 | 欧美中文字幕在线观看 | 中文字幕亚洲在线 | 网站一区二区三区 | 天天爽夜夜爽夜夜爽精品视频 | 一级片av| 精品欧美久久 | 一区二区免费在线观看 | 久久永久视频 | 国产永久免费观看 | 国产一区二区精品久久 | 久久手机视频 | 精品久久久久久久久久久院品网 | 久久人人爽人人爽人人片亚洲 | 国产日韩高清在线 | 日韩精品中文字幕在线观看 | av在线一区二区 | 中文字幕一区在线观看 | 国产一区二区三区四区五区 | 激情综合色综合久久综合 | 一区二区av | 视频福利一区 | h在线看| 日本一区二区精品 | 日韩一区二 | 久久视频一区 | 亚洲国产精品一区二区久久 | 日本精品二区 | 久久久精品国产 | 美女视频一区 | 国产黄色在线观看 | 一级片在线观看 | 自拍视频在线观看免费 | 欧美精品1区2区3区 免费亚洲婷婷 | 精品久久久久一区二区国产 | 亚洲成人一区二区三区 | 国产精品久久久久久久一区探花 | 日韩午夜av | 国产精品一区二区三区av | 久久av资源网 | 免费观看一级特黄欧美大片 | 中文字幕一区在线观看 | 97在线视频免费 | 一区二区免费在线视频 | 日韩福利视频导航 | 免费黄看片 | 亚洲热在线视频 | 国产一级视频 | 色婷婷精品国产一区二区三区 | 欧美一区二区三区黄色 | 日韩成人在线视频 | 国产色 | 欧美极品视频 | 精品一区二区在线观看 | 久久成人精品 | 国产欧美综合一区二区三区 | 91在线视频免费观看 | 国产精品久久久久久久久免费高清 | 99亚洲精品| 久久久国产精品 | 成人精品视频 | 这里有精品视频 | 在线 亚洲 欧美 | 久久伊人免费视频 | 亚洲欧美中文日韩在线v日本 | 一区二区视频免费 | 做a视频在线观看 | 成人免费视频网站在线看 | 97在线观看 | 免费在线看a | 国产片av| 成人免费在线视频 | 欧美日韩一区二区三区四区 | 免费观看一级特黄欧美大片 | 免费99视频| 国产精品久久一区二区三区 | 视频一区 日韩 | 国产精品无码永久免费888 | 在线看成人片 | 91精品国产一区二区三区蜜臀 | 亚洲一区精品在线 | 在线亚洲一区 | h视频在线免费 | 日韩精品免费在线视频 | 免费99精品国产自在在线 | 欧美在线小视频 | 超碰在线播 | 狠狠搞狠狠操 | 亚洲视频一区二区三区 | 日韩在线观看一区 | 国产精品人人做人人爽人人添 | 成人 在线 | 艹艹网 | www.欧美.com| 羞羞视频网站在线免费观看 | 国产精品1区2区3区 中文字幕一区二区三区四区 | 精品色区 | 男人天堂a| 中文字幕一区在线观看视频 | a级在线观看免费 | 91免费在线| 国产视频久久久 | 日本黄a三级三级三级 | 久久9视频 | 久草免费在线 | 在线中文字幕av | 久久人人av | 久久久久一区 | 国产色播 | 久久久久国产一区 | 中文字幕视频在线 | 一区二区三区在线播放 | 色综合天天天天做夜夜夜夜做 | 中文字幕国产 | 亚洲精品一区二区另类图片 | 亚洲精品三级 | 韩国毛片在线观看 | aaaaaaa片毛片免费观看 | 精品久久久久久久 | 一级在线观看 | 久久欧美视频 | 一级日批片 | 中文字幕av第一页 | 国产资源视频在线观看 | 亚洲视频一区在线播放 | 香蕉大人久久国产成人av | 午夜精品成人一区二区 | 亚州精品视频 | 天天射影院 | 九九九九九九精品任你躁 | 日韩一区二区三区在线 | 精品国产一区二区三区久久久 | 美女天堂网 | 国产精品毛片久久久久久久 | 伦理一区| 国产日韩欧美一二三区 | 国产精品美女久久久久久久网站 | 欧美人人 | 中文字幕亚洲欧美日韩在线不卡 | 九色porny丨国产精品 | 黑人巨大精品欧美一区二区三区 | 国产成人久久精品77777 | 亚洲一区二区av | 成人免费毛片高清视频 | 国产精品久久久久久久久福交 | 91小视频网站 | 天天躁日日躁狠狠躁av麻豆 | 色综合视频 | 欧美八区| 久久一区 | 一区二区三区在线免费观看 | 免费久久99精品国产婷婷六月 | 四虎久久精品 | 欧美精品日韩 | 国产精品成人一区二区三区 | 伊人天天操| 国产精品一区二区在线 | 中文字幕免费看 | 99久久婷婷国产精品综合 | 免费在线成人av | 亚洲免费观看视频 | 欧美日韩国产一区二区在线观看 | 亚洲视频久久久 | 日本天天操 | 天天干夜操 | 国产偷久久9977 | 日韩精品一区二区在线观看 | 一区二区在线影院 | 日韩精品一二三区 | 成人精品视频99在线观看免费 | 亚洲一区国产精品 | 精品免费在线 | 日韩福利视频 | 国产欧美日韩综合精品 | 免费福利视频一区二区三区 | 久久精品国产99精品国产亚洲性色 | 国产精品免费av | 久久综合一区二区 | 国产日韩精品视频 | 高清av网站| 日韩视频一区二区 | 狠狠伊人| 中文字幕欧美日韩一区 | 九九久久精品视频 | 成人高清视频在线观看 | 91久久精品国产 | 成人国产一区二区 | 国产99久久久久久免费看农村 | av色伊人久久综合一区二区 | 精品国产91久久 | 国产精品夜夜春夜夜爽久久电影 | 国产区日韩区欧美区 | 久久国内精品 | 日日干夜夜操 | 国产精品揄拍一区二区久久国内亚洲精 | 久久一区| 欧美成人精品一区二区三区 | 欧美激情伊人 | 后进极品白嫩翘臀在线视频 | 久草视频国产 | 欧美亚洲一| 欧美视频免费在线 | 国产自产才c区 | 成人av教育 | 中文视频在线 | 午夜不卡一区二区 | 亚洲男人的天堂在线 | 欧美成人精品一区二区三区 | 亚洲欧美在线视频 | 欧美五月婷婷 | www.久草 | av网址在线播放 | 色久天堂 | 不卡的免费av | 国产美女网站视频 | 欧美成人精品一区二区男人看 | 久久久久久久久一区 | 99久久精品一区二区成人 | 国产福利一区二区 | 国产96在线观看 | 日韩精品视频在线播放 | 日韩不卡一区二区 | 久久久久久国产精品 | 免费成人在线观看 | 亚洲精品在线免费观看视频 | 成人久久久 | 亚洲成人黄色 | 精久视频 | 国产1区在线观看 | 欧美夜夜骑| 国产精品美女久久久 | 成人免费在线视频 | 中文字幕不卡在线 | 午夜影院免费观看视频 | 成人高清在线观看 | 欧美1级 | 日韩一区在线视频 | 在线视频亚洲 | 亚洲免费在线播放 | 1区在线| 另类免费视频 | 欧美黑人做爰xxxⅹ 国产精品一区二区视频 | 精品无人乱码一区二区三区的优势 | 欧美视频三区 | 久久成人免费视频 | 九九九九九九精品任你躁 | 中文字幕在线视频免费观看 | 一区三区在线观看 | 中文字幕视频一区 | 欧美与黑人午夜性猛交久久久 | 日本亚洲精品成人欧美一区 | 日本黄色a级 | 免费日韩视频 | 波多野结衣一区二区三区四区 | 天天拍天天操 | 99国产视频 | 97久久精品| 操久久| 国产成人一区 | 精品国产鲁一鲁一区二区三区 | 国产精品久久久久久中文字 | 麻豆视频91 | www.狠狠干| 一级毛片电影 | 国产羞羞视频在线观看 | 99视频在线免费观看 | 狠狠久久伊人中文字幕 | 欧美日韩精品一区二区三区 | 四虎永久免费 | 91天堂在线观看 | 国产欧美精品区一区二区三区 | 污视频免费网站观看 | 日韩精品一区二区三区在线 | 91久久久久久久久久久久久久久久 | 久久久xxx | 成人精品久久久 | 精品国产鲁一鲁一区二区在线观看 | 在线国产视频 | 女男羞羞视频网站免费 | 欧美精品在线观看 | 亚洲v欧美| 99精品国产在热久久 | 羞羞网页 | 亚洲精品18 | 精品国产精品国产偷麻豆 | 99色播| 亚洲不卡免费视频 | 激情福利视频 | 美女扒开尿口来摸 | 我看一级毛片 | 国产精品久久久久久久久 | 91精品国产综合久久国产大片 | 青草青草久热精品视频在线观看 | 成人在线视频网站 | 日韩在线播放一区二区三区 | 伊人久久艹 | 一区二区在线视频免费观看 | 国产免费自拍视频 | 欧美日韩国产一区二区三区 | 欧美亚洲 | 久久成人免费视频 | 日韩国产 | 在线视频一区二区三区 | 国产精品亚洲一区二区三区在线 | 久久99精品久久久久国产越南 | 午夜影视在线观看 | 日本在线观看网站 | 97超碰青青草 | 色av综合在线 | 久久久久久亚洲精品 | 日本久久二区 | 综合久久综合久久 | 99热婷婷 | 精品国产乱码久久久久久密桃99 | 亚洲成人久久久久 | 中文字幕一区在线观看视频 | 红桃av一区二区 | 成人国产 | 欧美一区二区三区四区视频 | 国产精品美女久久久久aⅴ国产馆 | 日韩精品1区 | 2019天天干 | 国产精品美女久久久久久免费 | 日韩一区二区三区在线 | 夜夜操av| 国产在线精品一区二区三区 | 自拍视频在线播放 | 国产在线专区 | 亚洲性生活免费视频 | www.国产.com | 一级毛片免费观看 | 亚洲一区中文 | 中文字幕在线三区 | 国产精品一区二区不卡 | 日韩中文字幕精品 | 日韩精品在线网站 | 精品96久久久久久中文字幕无 | 日韩欧美精品区 | 国产精品久久久久久妇女6080 | 久久精品亚洲一区 | 久久久久久久久久久久久av | 在线观看视频一区二区三区 | 亚洲国产精品一区二区久久 | 99精品欧美一区二区蜜桃免费 | 国产欧美一区二区三区在线看 | 国产9色在线 | 日韩 | 亚洲小视频 | 狠狠的干 | 精品二区 | 91精品国产91久久久久久 | 成人免费毛片嘿嘿连载视频 | 日韩久久久一区二区 | 久久伊人亚洲 | 一区二区三区在线免费看 | 亚洲天堂男人 | 日本在线观看 | av在线免费网址 | 亚洲精品一区二区三区在线看 | 北条麻妃国产九九九精品小说 | 久久久久久麻豆 | 国产精品成人国产乱一区 | 成人在线观看免费 | 91社区影院 | 国产视频久久久久 | h视频免费| 免费一级黄色电影 | 国产乱a视频在线 | 欧美一级片在线观看 | 精品一区二区三区免费 | 国产精品一区二区三区在线 | 色久天堂 | 亚洲黄色一区二区三区 | 人人干人人干人人干 | 国产情侣自拍啪啪 | 国产特一级黄色片 | av男人天堂网 | 欧美成人免费 | 在线观看av国产一区二区 | 国产在线中文字幕 | 国产欧美一区二区三区在线看 |