日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

SDK 使用說明

在Java項目中使用BaaS REST前,需要獲取REST身份、獲取 REST SDK、添加依賴及修改配置項。

說明

關于如何獲取 REST 身份,請參見文檔 獲取REST身份

SDK 通用說明

第一步:添加依賴

在 pom 中依賴 restclient 的 Jar 包,可以通過下載SDK到本地,并按如下方式引入SDK;也可以通過直接下載Demo工程進行(點擊下載Demo工程)。

SDK下載鏈接

依賴形式

  • 直接依賴

    // 該命令在項目中運行
    // mvn install:install-file -Dfile=jar包的位置 -DgroupId=com.antfinancial.antchain.baas.tool -DartifactId=rest-client -Dversion=2.16.5 -Dpackaging=jar
    // 運行成功后再pom.xml增加相應依賴
    <dependency>
        <groupId>com.antfinancial.antchain.baas.tool</groupId>
        <artifactId>rest-client</artifactId>
        <version>2.16.5</version>
    </dependency>
    
  • 間接依賴

    <dependencies>
         <dependency>
             <groupId>com.alipay.mychainx</groupId>
             <artifactId>mychainx-sdk-java-all</artifactId>
             <version>0.10.2.24.5</version>
         </dependency>
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-lang3</artifactId>
             <version>3.5</version>
         </dependency>
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>fastjson</artifactId>
             <version>1.2.83</version>
         </dependency>
         <dependency>
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
             <version>23.0</version>
         </dependency>
         <dependency>
             <groupId>org.bouncycastle</groupId>
             <artifactId>bcpkix-jdk15on</artifactId>
             <version>1.66</version>
         </dependency>
         <dependency>
             <groupId>org.apache.httpcomponents</groupId>
             <artifactId>httpclient</artifactId>
             <version>4.4.1</version>
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-core</artifactId>
             <version>4.3.13.RELEASE</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-autoconfigure</artifactId>
             <version>2.7.10</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
             <version>2.7.10</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.retry</groupId>
             <artifactId>spring-retry</artifactId>
             <version>1.1.5.RELEASE</version>
         </dependency>
     </dependencies>
    
說明

demo中使用的 Spring Boot 版本為 2.7.10,如果您有任何兼容性問題,請聯系螞蟻技術支持。

第二步:添加配置項

我們將交易分成三種類別:

  • 查詢交易:所有查詢交易都不需要簽名(需要明確指定bizid,不需要鏈相關的配置)。        

  • 需要管理員簽名的交易:包括創建賬戶/凍結賬戶,部署原生合約(需要明確指定bizid,不需要鏈相關的配置)。

  • 其他交易:需要使用本地私鑰簽名和使用KMS簽名。其中3類交易如果需要使用KMS簽名的,需要配置tenantid,否則,需要配置其他的配置項,但是無論是那種配置,都可以使用1和2兩類交易。    

說明
  • 第1種和第2種交易均需要明確指定bizid,無需鏈相關的配置。 以上三種交易如果需要使用KMS簽名的,則需要配置tenantid,否則,需要配置其他的配置項。不論是哪種配置,都可以使用第1和第2類交易。

  • 關于如何獲取bizid,可參見 開始使用REST服務 > 獲取鏈ID

添加配置項后的示例代碼如下:

mychain:
  rest:
    bizid: ad73c6dc  #鏈的bizid  可以在控制臺
    cipher-suit: ec  #鏈的簽名算法 ec or sm  默認為ec
    rest-url: https://rest.baas.alipay.com   #resturl,為固定值,無需更改
    access-id: baas_admin                #ak,可在控制臺鏈操作欄下的更多 > 查看REST身份,獲取Access-ID
    access-secret: access.key            #secret,可在控制臺鏈操作欄下的更多 > 獲取REST身份,下載AccessKey
    default-account: wasm_test           #賬戶名,托管模式不需要配置,可在控制臺上創建非托管賬戶后填入,
    default-account-key: user.key        #賬戶私鑰,托管模式不需要配置,可在控制臺創建非托管賬戶后獲取,需放在項目的resources目錄中
    default-account-pwd: 123Yui*2        #賬戶密碼,托管模式不需要配置,可在控制臺創建非托管賬戶后填入
    tenantid: mytenant                   #使用KMS簽名,需要tenantid,即阿里云UID;非托管模式可以不需要
    account: 為密鑰托管賬戶的賬戶名,非托管模式不需要
    kmsId: 為密鑰托管賬戶kmsidkey,可以在控制臺查看,非托管模式不需要
說明

在配置過程中,以上參數請不要全部配置。如果是托管模式,則只需配置托管模式相關的參數;如果是非托管模式,則只需配置非托管模式相關的參數。

第三步:注入restclient類

@Autowired
private RestClient restClient;

消費托管MQ的使用說明

在Java項目中使用BaaS REST進行消費托管MQ之前,請參見本文上方的 SDK 通用說明獲取REST身份、下載 REST SDK、添加依賴及修改配置項。

說明
  • 在修改配置項時,無需進行鏈賬戶相關的額外配置。

  • SDK 版本需升級至2.15.3及以上版本,消費托管MQ相關的接口參數,請參見 消費托管MQ接口

消費托管MQ的示例主干代碼如下:

package com.alipay.mychain.baas.demo;

import com.antfinancial.mychain.baas.tool.restclient.RestClient;
import com.antfinancial.mychain.baas.tool.restclient.model.MQAckRequest;
import com.antfinancial.mychain.baas.tool.restclient.model.MQMessage;
import com.antfinancial.mychain.baas.tool.restclient.request.AckMQMessageRequest;
import com.antfinancial.mychain.baas.tool.restclient.request.ConsumeMQMessageRequest;
import com.antfinancial.mychain.baas.tool.restclient.response.AckMQMessageResponse;
import com.antfinancial.mychain.baas.tool.restclient.response.ConsumeMQMessageResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.util.ArrayList;

@SpringBootApplication
public class MQConsumerDemo implements CommandLineRunner {

    @Autowired
    private RestClient restClient;

    // 配置下行數據流ID;在BaaS數據導出服務控制臺中,導出任務ID即為下行數據流ID
    private static String streamId = "WG6qO8WQ";

    public boolean worker(MQMessage message) {
        // 消息處理邏輯, 會保證消息至少被處理一次
        System.out.println("Received " + message.getMessage_id() + ": " + message.getMessage_body());
        return true;
    }

    public static void main(String[] args){
        try {
            SpringApplication springApplication = new SpringApplication(MQConsumerDemo.class);
            springApplication.run(args);
        }catch (Exception e){
            e.printStackTrace();
        }
    }


    public void run(String... strings) throws Exception {
        final ConsumeMQMessageRequest request = new ConsumeMQMessageRequest();
        request.setStreamId(streamId);
        // 循環消費消息
        while(true) {
            ConsumeMQMessageResponse response = restClient.consumeMQMessage(request);
            if (response.getError().getCode() == 200) {
                // 成功獲取的待消費的消息,構造消息的 Ack 請求,并逐條消息調用 worker 進行處理(性能不足時可以改為并發調用 worker)
                AckMQMessageRequest ackMQMessageRequest = new AckMQMessageRequest();
                ackMQMessageRequest.setStreamId(streamId);
                ackMQMessageRequest.setMqAckRequests(new ArrayList<MQAckRequest>(response.getResult().size()));
                for (MQMessage msg : response.getResult()) {
                    MQAckRequest ackRequest = new MQAckRequest();
                    ackRequest.setReceipt_handle(msg.getReceipt_handle());
                    ackRequest.setState(worker(msg) ? "success" : "failed");
                    ackMQMessageRequest.getMqAckRequests().add(ackRequest);
                }
                if (ackMQMessageRequest.getMqAckRequests().size() > 0) {
                    // 確認消息的處理結果,失敗的消息會在一定時間后重新被 consumeMQMessage 消費到
                    AckMQMessageResponse ackMQMessageResponse = restClient.ackMQMessage(ackMQMessageRequest);
                    if (response.getError().getCode() != 200) {
                        System.out.println("Ack mq message failed: " + ackMQMessageResponse.getError().getCode() + ", " + ackMQMessageResponse.getError().getMessage());
                    }
                }
            } else {
                System.out.println("Consume mq message failed: " + response.getError().getCode() + ", " + response.getError().getMessage());
                Thread.sleep(1000);
            }
        }


    }
}