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

Go Demo

通過本文,您可以了解短信服務Go語言的消息回執示例,同時下載相應的SDK安裝包拉取MNS消息。

下載地址:Go SDK

Demo如下:

說明

調用接口前需配置環境變量,通過環境變量讀取訪問憑證。AccessKey ID和AccessKey Secret的環境變量名:SMS_ACCESS_KEY_ENV 、SMS_ACCESS_KEY_SECRET_ENV。配置詳情請參見在Linux、macOS和Windows系統配置環境變量

package main

import (
    "os"
    "encoding/base64"
    "fmt"
    "github.com/aliyun/alibaba-cloud-sdk-go/sdk/endpoints"
    "github.com/aliyun/alibaba-cloud-sdk-go/services/dybaseapi"
    "github.com/aliyun/alibaba-cloud-sdk-go/services/dybaseapi/mns"
    "time"
)

const (
    mnsDomain = "1943695596114318.mns.cn-hangzhou.aliyuncs.com"
)

func main() {
    endpoints.AddEndpointMapping("cn-hangzhou", "Dybaseapi", "dybaseapi.aliyuncs.com")
     // 阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。
     // 強烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
     // 本示例以把AccessKey ID和AccessKey Secret保存在環境變量為例說明,來實現API訪問的身份驗證。
     // 創建client實例
    client, err := dybaseapi.NewClientWithAccessKey(
        "cn-hangzhou",           // 您的可用區ID
        os.Getenv("SMS_ACCESS_KEY_ENV"),      // 您的AccessKey ID
        os.Getenv("SMS_ACCESS_KEY_SECRET_ENV"))     // 您的AccessKey Secret
    if err != nil {
        // 異常處理
        panic(err)
    }
    queueName := "<QueueName>"
    messageType := "<MessageType>"
    cstLoc, _ := time.LoadLocation("Asia/Shanghai")
    var token *dybaseapi.MessageTokenDTO
    var expireTime time.Time
    for {
        if token == nil || expireTime.Unix()-time.Now().Unix() < 2*60 {
            // 創建 API 請求并設置參數
            request := dybaseapi.CreateQueryTokenForMnsQueueRequest()
            request.MessageType = messageType
            request.QueueName = queueName
            // 發起請求并處理異常
            response, err := client.QueryTokenForMnsQueue(request)
            if err != nil {
                panic(err)
            }

            token = &response.MessageTokenDTO
        }
        expireTime, err = time.ParseInLocation("2006-01-02 15:04:05", token.ExpireTime, cstLoc)
        if err != nil {
            panic(err)
        }
        mnsClient, err := mns.NewClientWithStsToken(
            "cn-hangzhou",
            token.AccessKeyId,
            token.AccessKeySecret,
            token.SecurityToken,
        )
        if err != nil {
            panic(err)
        }
        mnsRequest := mns.CreateBatchReceiveMessageRequest()
        mnsRequest.Domain = mnsDomain
        mnsRequest.QueueName = queueName
        mnsRequest.NumOfMessages = "10"
        mnsRequest.WaitSeconds = "5"
        mnsResponse, err := mnsClient.BatchReceiveMessage(mnsRequest)
        if err != nil {
            panic(err)
        }
        // fmt.Println(mnsResponse)
        receiptHandles := make([]string, len(mnsResponse.Message))
        for i, message := range mnsResponse.Message {
            messageBody, decodeErr := base64.StdEncoding.DecodeString(message.MessageBody)
            if decodeErr != nil {
                panic(decodeErr)
            }
            fmt.Println(string(messageBody))
            receiptHandles[i] = message.ReceiptHandle
        }
        if len(receiptHandles) > 0 {
            mnsDeleteRequest := mns.CreateBatchDeleteMessageRequest()
            mnsDeleteRequest.Domain = mnsDomain
            mnsDeleteRequest.QueueName = queueName
            mnsDeleteRequest.SetReceiptHandles(receiptHandles)
            //_, err = mnsClient.BatchDeleteMessage(mnsDeleteRequest) //取消注釋將刪除隊列中的消息
            if err != nil {
                panic(err)
            }
        }
    }
}