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

@DubboService注解使用以及應(yīng)用場(chǎng)景和示例代碼

 更新時(shí)間:2026年02月06日 15:05:41   作者:小猿、  
文章詳細(xì)介紹了Dubbo框架中@DubboService注解的使用,包括其核心定義、屬性詳解、應(yīng)用場(chǎng)景及示例代碼,該注解用于簡(jiǎn)化Dubbo服務(wù)的暴露配置,支持靈活的服務(wù)屬性配置,并提供了多種服務(wù)治理功能

一、@DubboService注解核心定義

@DubboService是Apache Dubbo框架中用于暴露服務(wù)的核心注解,作用于服務(wù)實(shí)現(xiàn)類上,用于標(biāo)記該類是一個(gè)Dubbo服務(wù)提供者,告訴Dubbo框架:該類的方法需要被封裝為遠(yuǎn)程服務(wù),供其他服務(wù)消費(fèi)者(通過(guò)@DubboReference注解)遠(yuǎn)程調(diào)用。

核心本質(zhì):替代Dubbo 2.7之前的XML配置(如<dubbo:service>標(biāo)簽),通過(guò)注解式開(kāi)發(fā)簡(jiǎn)化服務(wù)暴露配置,實(shí)現(xiàn)“零XML”快速集成Dubbo服務(wù),同時(shí)支持靈活配置服務(wù)的各項(xiàng)屬性(如超時(shí)、重試、負(fù)載均衡等)。

依賴前提:使用該注解前,需在項(xiàng)目中引入Dubbo核心依賴(以Maven為例),確保注解可被Dubbo框架掃描識(shí)別:

<!-- Dubbo核心依賴 -->
<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>3.2.0</version> <!-- 推薦使用穩(wěn)定版 -->
</dependency>

補(bǔ)充:Dubbo 3.x版本完全兼容@DubboService注解,且強(qiáng)化了服務(wù)發(fā)現(xiàn)、序列化等能力,本文示例均基于Dubbo 3.x + Spring Boot 2.x/3.x環(huán)境(最主流應(yīng)用環(huán)境)。

二、@DubboService核心屬性詳解

@DubboService注解提供了豐富的屬性,用于配置服務(wù)的暴露規(guī)則、運(yùn)行參數(shù),覆蓋大多數(shù)服務(wù)提供者的需求,常用屬性如下(按使用頻率排序):

屬性名

類型

默認(rèn)值

核心作用

interfaceClass

Class<?>

void.class

指定服務(wù)暴露的接口類型(必填,若實(shí)現(xiàn)類只實(shí)現(xiàn)一個(gè)接口,可省略,Dubbo自動(dòng)推斷)

version

String

""

服務(wù)版本號(hào),用于服務(wù)版本管理(解決接口兼容問(wèn)題,如version="1.0.0")

group

String

""

服務(wù)分組,用于區(qū)分同一接口的不同實(shí)現(xiàn)(如group="payment"、group="order")

timeout

long

0

服務(wù)調(diào)用超時(shí)時(shí)間(單位:毫秒),0表示使用全局配置;優(yōu)先級(jí):方法級(jí)>類級(jí)(@DubboService)>全局

retries

int

2

服務(wù)調(diào)用失敗重試次數(shù)(不包括第一次調(diào)用),0表示不重試;適用于非冪等接口需設(shè)為0

loadbalance

String

"random"

負(fù)載均衡策略,可選值:random(隨機(jī))、roundrobin(輪詢)、leastactive(最小活躍數(shù))等

cluster

String

"failover"

集群容錯(cuò)策略,可選值:failover(失敗重試)、failfast(快速失?。?、failsafe(失敗安全)等

methods

MethodConfig[]

{}

配置單個(gè)方法的屬性(如單獨(dú)給某個(gè)方法設(shè)超時(shí)、重試),優(yōu)先級(jí)高于類級(jí)屬性

register

boolean

true

是否將服務(wù)注冊(cè)到注冊(cè)中心(如Nacos、Zookeeper),false表示僅本地暴露(測(cè)試用)

關(guān)鍵提醒:version和group屬性是服務(wù)治理的核心,當(dāng)接口有多個(gè)實(shí)現(xiàn)或多版本迭代時(shí),必須通過(guò)這兩個(gè)屬性區(qū)分,否則會(huì)出現(xiàn)服務(wù)調(diào)用錯(cuò)亂。

三、@DubboService應(yīng)用場(chǎng)景(分場(chǎng)景說(shuō)明,貼合實(shí)際開(kāi)發(fā))

@DubboService的核心應(yīng)用場(chǎng)景是“服務(wù)提供者暴露遠(yuǎn)程服務(wù)”,結(jié)合實(shí)際開(kāi)發(fā)中的不同需求,可分為以下4類典型場(chǎng)景,覆蓋絕大多數(shù)業(yè)務(wù)場(chǎng)景:

場(chǎng)景1:基礎(chǔ)場(chǎng)景——單接口單實(shí)現(xiàn),無(wú)特殊配置

適用情況:簡(jiǎn)單微服務(wù)架構(gòu),一個(gè)接口只有一個(gè)實(shí)現(xiàn)類,不需要版本管理、特殊超時(shí)/重試配置,僅需暴露服務(wù)供消費(fèi)者調(diào)用(最常用、最基礎(chǔ))。

示例場(chǎng)景:用戶服務(wù)(user-service)暴露“用戶查詢”接口,訂單服務(wù)(order-service)遠(yuǎn)程調(diào)用該接口獲取用戶信息。

場(chǎng)景2:版本管理——接口迭代,兼容舊版本

適用情況:業(yè)務(wù)迭代中,接口需要新增方法或修改參數(shù),但舊版本服務(wù)仍有消費(fèi)者在使用(不能直接替換),通過(guò)version區(qū)分不同版本的服務(wù)。

示例場(chǎng)景:用戶接口v1.0.0僅支持“根據(jù)ID查詢用戶”,迭代v2.0.0新增“根據(jù)手機(jī)號(hào)查詢用戶”,舊消費(fèi)者用v1.0.0,新消費(fèi)者用v2.0.0,兩個(gè)版本同時(shí)運(yùn)行。

場(chǎng)景3:服務(wù)分組——同一接口多實(shí)現(xiàn),按業(yè)務(wù)區(qū)分

適用情況:一個(gè)接口有多個(gè)不同的實(shí)現(xiàn)類,對(duì)應(yīng)不同的業(yè)務(wù)場(chǎng)景(如支付接口,有支付寶實(shí)現(xiàn)、微信支付實(shí)現(xiàn)),通過(guò)group區(qū)分不同實(shí)現(xiàn),消費(fèi)者按需調(diào)用。

示例場(chǎng)景:支付接口(PaymentService)有兩個(gè)實(shí)現(xiàn):AlipayServiceImpl(支付寶支付)、WxPayServiceImpl(微信支付),分別設(shè)置group="alipay"、group="wxpay",訂單服務(wù)根據(jù)支付類型調(diào)用對(duì)應(yīng)分組的服務(wù)。

場(chǎng)景4:個(gè)性化配置——單獨(dú)設(shè)置超時(shí)、重試、負(fù)載均衡

適用情況:部分服務(wù)需要特殊的運(yùn)行參數(shù)(如耗時(shí)較長(zhǎng)的服務(wù)需延長(zhǎng)超時(shí)時(shí)間,非冪等接口禁止重試),通過(guò)@DubboService的屬性單獨(dú)配置,覆蓋全局配置。

示例場(chǎng)景:文件上傳服務(wù)(耗時(shí)較長(zhǎng)),設(shè)置timeout=30000(30秒);訂單創(chuàng)建服務(wù)(非冪等),設(shè)置retries=0(不重試),避免重復(fù)創(chuàng)建訂單。

場(chǎng)景5:本地測(cè)試——不注冊(cè)服務(wù),僅本地暴露

適用情況:開(kāi)發(fā)階段,無(wú)需將服務(wù)注冊(cè)到注冊(cè)中心,僅需本地調(diào)試(如單獨(dú)測(cè)試服務(wù)實(shí)現(xiàn)類,或本地消費(fèi)者調(diào)用本地提供者),設(shè)置register=false。

四、示例代碼(完整可運(yùn)行,基于Dubbo 3.x + Spring Boot)

以下示例均包含「接口定義」「服務(wù)實(shí)現(xiàn)(@DubboService使用)」「消費(fèi)者調(diào)用(@DubboReference配合)」,可直接復(fù)制到項(xiàng)目中使用(需確保注冊(cè)中心配置正確,如Nacos)。

前置準(zhǔn)備:Spring Boot配置文件(application.yml)

無(wú)論哪個(gè)場(chǎng)景,服務(wù)提供者和消費(fèi)者都需配置Dubbo核心信息(注冊(cè)中心、應(yīng)用名等),以Nacos作為注冊(cè)中心為例:

# 服務(wù)提供者 + 消費(fèi)者 通用配置(可根據(jù)角色調(diào)整)
spring:
  application:
    name: dubbo-demo-provider # 應(yīng)用名(消費(fèi)者需改為dubbo-demo-consumer)
dubbo:
  protocol:
    name: dubbo # 通信協(xié)議(默認(rèn)dubbo,可選http、netty等)
    port: -1 # 端口(-1表示隨機(jī)端口,避免端口沖突)
  registry:
    address: nacos://127.0.0.1:8848 # Nacos注冊(cè)中心地址(本地Nacos需啟動(dòng))
  scan:
    base-packages: com.example.dubbo.service.impl # 服務(wù)提供者:掃描@DubboService注解的包
    # 消費(fèi)者:掃描@DubboReference注解的包(如com.example.dubbo.controller)

示例1:基礎(chǔ)場(chǎng)景(單接口單實(shí)現(xiàn))

1.1 接口定義(公共模塊,供提供者和消費(fèi)者依賴)

package com.example.dubbo.service;

/**
 * 公共接口(提供者實(shí)現(xiàn),消費(fèi)者調(diào)用)
 */
public interface UserService {
    /**
     * 根據(jù)用戶ID查詢用戶名
     * @param userId 用戶ID
     * @return 用戶名
     */
    String getUserNameById(Long userId);
}

1.2 服務(wù)實(shí)現(xiàn)(提供者,使用@DubboService)

package com.example.dubbo.service.impl;

import com.example.dubbo.service.UserService;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Component;

// @Component:交給Spring管理(Dubbo 3.x可省略,但建議加上,避免Spring掃描不到)
// @DubboService:暴露該類為Dubbo服務(wù),自動(dòng)推斷接口(僅實(shí)現(xiàn)一個(gè)接口)
@DubboService
@Component
public class UserServiceImpl implements UserService {

    @Override
    public String getUserNameById(Long userId) {
        // 模擬數(shù)據(jù)庫(kù)查詢(實(shí)際開(kāi)發(fā)中替換為真實(shí)邏輯)
        if (userId == 1L) {
            return "張三";
        } else if (userId == 2L) {
            return "李四";
        }
        return "未知用戶";
    }
}

1.3 消費(fèi)者調(diào)用(配合@DubboReference)

package com.example.dubbo.controller;

import com.example.dubbo.service.UserService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    // @DubboReference:引用遠(yuǎn)程Dubbo服務(wù)(與@DubboService對(duì)應(yīng))
    @DubboReference
    private UserService userService;

    @GetMapping("/user/{userId}")
    public String getUserName(@PathVariable Long userId) {
        // 遠(yuǎn)程調(diào)用UserService的方法
        return userService.getUserNameById(userId);
    }
}

示例2:版本管理場(chǎng)景(多版本接口)

2.1 接口定義(新增方法,兼容舊版本)

package com.example.dubbo.service;

public interface UserService {
    // v1.0.0 原有方法
    String getUserNameById(Long userId);

    // v2.0.0 新增方法
    String getUserNameByPhone(String phone);
}

2.2 多版本服務(wù)實(shí)現(xiàn)(兩個(gè)版本,同時(shí)暴露)

// v1.0.0 版本實(shí)現(xiàn)(僅實(shí)現(xiàn)原有方法)
@DubboService(version = "1.0.0")
@Component
public class UserServiceImplV1 implements UserService {
    @Override
    public String getUserNameById(Long userId) {
        // 模擬v1.0.0邏輯
        return "v1.0.0 - 張三(ID:" + userId + ")";
    }

    // 新增方法不實(shí)現(xiàn)(避免影響舊版本)
    @Override
    public String getUserNameByPhone(String phone) {
        throw new UnsupportedOperationException("v1.0.0 不支持該方法");
    }
}

// v2.0.0 版本實(shí)現(xiàn)(實(shí)現(xiàn)所有方法)
@DubboService(version = "2.0.0")
@Component
public class UserServiceImplV2 implements UserService {
    @Override
    public String getUserNameById(Long userId) {
        // 兼容v1.0.0邏輯,新增優(yōu)化
        return "v2.0.0 - 張三(ID:" + userId + ")";
    }

    @Override
    public String getUserNameByPhone(String phone) {
        // 新增方法邏輯
        if ("13800138000".equals(phone)) {
            return "v2.0.0 - 張三";
        }
        return "v2.0.0 - 未知用戶";
    }
}

2.3 消費(fèi)者調(diào)用(指定版本)

@RestController
public class UserController {

    // 調(diào)用v1.0.0版本
    @DubboReference(version = "1.0.0")
    private UserService userServiceV1;

    // 調(diào)用v2.0.0版本
    @DubboReference(version = "2.0.0")
    private UserService userServiceV2;

    // 調(diào)用v1.0.0
    @GetMapping("/user/v1/{userId}")
    public String getUserNameV1(@PathVariable Long userId) {
        return userServiceV1.getUserNameById(userId);
    }

    // 調(diào)用v2.0.0新增方法
    @GetMapping("/user/v2/phone/{phone}")
    public String getUserNameV2(@PathVariable String phone) {
        return userServiceV2.getUserNameByPhone(phone);
    }
}

示例3:服務(wù)分組場(chǎng)景(同一接口多實(shí)現(xiàn))

3.1 接口定義

package com.example.dubbo.service;

/**
 * 支付接口(多實(shí)現(xiàn):支付寶、微信支付)
 */
public interface PaymentService {
    /**
     * 支付方法
     * @param orderId 訂單ID
     * @param amount 支付金額
     * @return 支付結(jié)果
     */
    String pay(Long orderId, BigDecimal amount);
}

3.2 多實(shí)現(xiàn)(按group區(qū)分)

// 支付寶支付實(shí)現(xiàn)(group="alipay")
@DubboService(group = "alipay")
@Component
public class AlipayServiceImpl implements PaymentService {
    @Override
    public String pay(Long orderId, BigDecimal amount) {
        return "支付寶支付成功:訂單ID=" + orderId + ",金額=" + amount + "元";
    }
}

// 微信支付實(shí)現(xiàn)(group="wxpay")
@DubboService(group = "wxpay")
@Component
public class WxPayServiceImpl implements PaymentService {
    @Override
    public String pay(Long orderId, BigDecimal amount) {
        return "微信支付成功:訂單ID=" + orderId + ",金額=" + amount + "元";
    }
}

3.3 消費(fèi)者調(diào)用(指定分組)

@RestController
public class PaymentController {

    // 引用支付寶分組的服務(wù)
    @DubboReference(group = "alipay")
    private PaymentService alipayService;

    // 引用微信支付分組的服務(wù)
    @DubboReference(group = "wxpay")
    private PaymentService wxPayService;

    // 支付寶支付接口
    @GetMapping("/pay/alipay/{orderId}/{amount}")
    public String alipay(@PathVariable Long orderId, @PathVariable BigDecimal amount) {
        return alipayService.pay(orderId, amount);
    }

    // 微信支付接口
    @GetMapping("/pay/wxpay/{orderId}/{amount}")
    public String wxpay(@PathVariable Long orderId, @PathVariable BigDecimal amount) {
        return wxPayService.pay(orderId, amount);
    }
}

示例4:個(gè)性化配置場(chǎng)景(超時(shí)、重試、負(fù)載均衡)

package com.example.dubbo.service.impl;

import com.example.dubbo.service.FileService;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Component;

// 個(gè)性化配置:超時(shí)30秒、不重試、負(fù)載均衡用最小活躍數(shù)
@DubboService(
        timeout = 30000, // 超時(shí)30秒(文件上傳耗時(shí)久)
        retries = 0,      // 不重試(非冪等,避免重復(fù)上傳)
        loadbalance = "leastactive", // 負(fù)載均衡:最小活躍數(shù)(優(yōu)先調(diào)用壓力小的服務(wù))
        version = "1.0.0"
)
@Component
public class FileServiceImpl implements FileService {

    @Override
    public String uploadFile(String fileName, byte[] fileContent) {
        // 模擬文件上傳(耗時(shí)操作)
        try {
            Thread.sleep(5000); // 模擬耗時(shí)5秒
        } catch (InterruptedException e) {
            throw new RuntimeException("文件上傳失敗");
        }
        return "文件上傳成功:" + fileName;
    }
}

五、注意事項(xiàng)(避坑重點(diǎn))

  • @DubboService作用于服務(wù)實(shí)現(xiàn)類,而非接口;接口不能加該注解,否則無(wú)法暴露服務(wù)。
  • 服務(wù)實(shí)現(xiàn)類必須交給Spring管理(加@Component、@Service等注解),否則Dubbo無(wú)法掃描到該類,導(dǎo)致服務(wù)暴露失敗。
  • version和group屬性若不配置,默認(rèn)是空字符串;當(dāng)有多個(gè)實(shí)現(xiàn)/版本時(shí),必須配置,否則消費(fèi)者會(huì)出現(xiàn)“服務(wù)找不到”或“調(diào)用錯(cuò)亂”。
  • 超時(shí)時(shí)間配置優(yōu)先級(jí):方法級(jí)(通過(guò)methods屬性配置)> 類級(jí)(@DubboService)> 全局配置(yml/properties)。
  • 非冪等接口(如新增、刪除操作)必須設(shè)置retries=0,避免重試導(dǎo)致數(shù)據(jù)重復(fù)(如重復(fù)創(chuàng)建訂單、重復(fù)刪除數(shù)據(jù))。
  • Dubbo 3.x與2.x的注解差異:Dubbo 2.x使用@Service(com.alibaba.dubbo.config.annotation.Service),Dubbo 3.x推薦使用@DubboService(org.apache.dubbo.config.annotation.DubboService),避免與Spring的@Service注解沖突。
  • 注冊(cè)中心必須啟動(dòng)(如Nacos、Zookeeper),且提供者、消費(fèi)者的registry.address配置一致,否則服務(wù)無(wú)法注冊(cè)和發(fā)現(xiàn)。

六、總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Spring AOP 實(shí)現(xiàn)主從讀寫(xiě)分離

    詳解Spring AOP 實(shí)現(xiàn)主從讀寫(xiě)分離

    本篇文章主要介紹了Spring AOP 實(shí)現(xiàn)主從讀寫(xiě)分離,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • Java項(xiàng)目如何防止SQL注入(多種方案匯總)

    Java項(xiàng)目如何防止SQL注入(多種方案匯總)

    SQL注入即是指web應(yīng)用程序?qū)τ脩糨斎霐?shù)據(jù)的合法性沒(méi)有判斷或過(guò)濾不嚴(yán),攻擊者可以在web應(yīng)用程序中事先定義好的查詢語(yǔ)句的結(jié)尾上添加額外的SQL語(yǔ)句,這篇文章主要介紹了?Java項(xiàng)目防止SQL注入的四種方案,需要的朋友可以參考下
    2023-12-12
  • 帶你重新認(rèn)識(shí)MyBatis的foreach

    帶你重新認(rèn)識(shí)MyBatis的foreach

    這篇文章主要介紹了重新認(rèn)識(shí)MyBatis的foreach,本文提出了一種簡(jiǎn)化<foreach>寫(xiě)法的設(shè)想,更重要的是通過(guò)解決空集時(shí)生成的SQL語(yǔ)法問(wèn)題,更深刻地理解MyBatis的foreach的生成機(jī)制,需要的朋友可以參考下
    2022-11-11
  • Sentinel流控規(guī)則實(shí)現(xiàn)限流保護(hù)詳解

    Sentinel流控規(guī)則實(shí)現(xiàn)限流保護(hù)詳解

    這篇文章主要介紹了Sentinel流控規(guī)則實(shí)現(xiàn)限流保護(hù),Sentinel是一個(gè)分布式系統(tǒng)的流量控制組件,它可以實(shí)現(xiàn)限流,流控,降級(jí)等功能,提高系統(tǒng)的穩(wěn)定性和可靠性,感興趣想要詳細(xì)了解可以參考下文
    2023-05-05
  • SpringBoot中的Logging詳解

    SpringBoot中的Logging詳解

    這篇文章主要介紹了SpringBoot中的Logging詳解,log配置可能是被忽視的一個(gè)環(huán)節(jié),一般的項(xiàng)目中日志配置好了基本上很少去改動(dòng),我們常規(guī)操作是log.info來(lái)記錄日志內(nèi)容,很少會(huì)有人注意到springBoot中日志的配置,需要的朋友可以參考下
    2023-09-09
  • spring boot密碼加密配置與實(shí)例詳解

    spring boot密碼加密配置與實(shí)例詳解

    BCrypt是一種專為密碼哈希設(shè)計(jì)的算法,它被廣泛認(rèn)為是安全的選擇之一,這篇文章主要介紹了spring boot密碼加密配置與實(shí)例詳解,需要的朋友可以參考下
    2024-12-12
  • 死磕 java同步系列之synchronized解析

    死磕 java同步系列之synchronized解析

    這篇文章主要介紹了Java中syncronized正確使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-06-06
  • 詳解MyBatis-Puls中saveBatch批量添加慢的問(wèn)題

    詳解MyBatis-Puls中saveBatch批量添加慢的問(wèn)題

    本文主要介紹了詳解MyBatis-Puls中saveBatch批量添加慢的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 在Java中使用ModelMapper簡(jiǎn)化Shapefile屬性轉(zhuǎn)JavaBean實(shí)戰(zhàn)過(guò)程

    在Java中使用ModelMapper簡(jiǎn)化Shapefile屬性轉(zhuǎn)JavaBean實(shí)戰(zhàn)過(guò)程

    本文介紹了在Java中使用ModelMapper庫(kù)簡(jiǎn)化Shapefile屬性轉(zhuǎn)JavaBean的過(guò)程,對(duì)比了原始的set方法和構(gòu)造方法,展示了如何使用ModelMapper進(jìn)行動(dòng)態(tài)屬性映射,從而減少手動(dòng)編寫(xiě)轉(zhuǎn)換代碼的工作量,通過(guò)示例代碼,展示了如何使用GeoTools讀取Shapefile屬性并將其轉(zhuǎn)換為JavaBean對(duì)象
    2025-02-02
  • RabbitMQ消息隊(duì)列之持久化機(jī)制詳解

    RabbitMQ消息隊(duì)列之持久化機(jī)制詳解

    這篇文章主要介紹了RabbitMQ消息隊(duì)列之持久化機(jī)制詳解,持久化,即將原本存在于內(nèi)存中的數(shù)據(jù)寫(xiě)入到磁盤(pán)上永久保存數(shù)據(jù),防止服務(wù)宕機(jī)時(shí)內(nèi)存數(shù)據(jù)的丟失,Rabbitmq 的持久化分為隊(duì)列持久化、消息持久化和交換器持久化,需要的朋友可以參考下
    2023-08-08

最新評(píng)論

南宁市| 杭锦旗| 扎囊县| 玉田县| 台中市| 绥芬河市| 进贤县| 秦皇岛市| 贵南县| 台东市| 巧家县| 四会市| 邵东县| 大洼县| 临沧市| 乌海市| 陆丰市| 保亭| 南丹县| 武强县| 涡阳县| 水城县| 榆树市| 古田县| 南汇区| 廊坊市| 文水县| 龙江县| 宾阳县| 连城县| 阜新市| 托里县| 周至县| 临夏县| 隆子县| 英吉沙县| 昭通市| 全州县| 万全县| 丰都县| 扎赉特旗|