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

消息隊列RabbitMQ版推送事件到函數計算

本文介紹如何通過事件總線EventBridge云消息隊列 RabbitMQ 版的數據推送到函數計算。

前提條件

您已完成以下操作:

步驟一:添加自定義事件源

  1. 登錄事件總線EventBridge控制臺。
  2. 在左側導航欄,單擊事件總線
  3. 在頂部菜單欄,選擇地域。
  4. 事件總線頁面,單擊已創建的自定義事件總線。

  5. 在左側導航欄,單擊事件源
  6. 事件源頁面,單擊添加事件源。

  7. 添加自定義事件源面板,輸入名稱描述事件提供方選擇消息隊列 RabbitMQ 版,并選擇已創建的云消息隊列 RabbitMQ 版的資源信息等,然后單擊確定。

步驟二:創建事件規則

重要 目標服務和事件規則必須處于同一地域。
  1. 登錄事件總線EventBridge控制臺,在左側導航欄,單擊事件總線。
  2. 在頂部菜單欄,選擇地域,在事件總線頁面,單擊目標總線名稱。
  3. 在左側導航欄,單擊事件規則,然后單擊創建規則。
  4. 創建規則頁面,完成以下操作。
    1. 配置基本信息配置向導,在名稱文本框輸入規則名稱,在描述文本框輸入規則的描述,然后單擊下一步
    2. 配置事件模式配置向導,事件源類型選擇自定義事件源,事件源選擇步驟一添加的自定義事件源,在事件模式內容代碼框輸入事件模式,然后單擊下一步。

      如需了解更多信息,請參見事件模式。

    3. 配置事件目標配置向導,配置事件目標,然后單擊創建。
      說明 1個事件規則最多可以添加5個目標。
      • 服務類型:單擊函數計算。
      • 服務:選擇已創建的函數計算的服務。
      • 函數:選擇已創建的函數計算的函數。
      • 事件:單擊模板

        以下提供變量和模板的示例。

        變量示例:

        {
          "source":"$.source",
          "type":"$.type"
        }

        模板示例:

        The event comes from ${source},event type is ${type}.

        如需了解更多信息,請參見事件內容轉換。

      • 服務版本和別名:選擇服務版本或服務別名。
        • 默認版本:LATEST。
        • 指定版本:選擇服務版本。更多信息,請參見管理版本
        • 指定別名:選擇服務別名。更多信息,請參見管理別名。
      • 調用方式:選擇同步調用異步調用。更多信息,請參見同步調用功能概覽。

步驟三:發布事件

import com.rabbitmq.client.*;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.TimeoutException;
import java.util.HashMap;
import java.util.UUID;

public class ProducerTest {
    public static void main(String[] args) throws IOException, TimeoutException {
        ConnectionFactory factory = new ConnectionFactory();
        // 設置接入點,在消息隊列RabbitMQ版控制臺實例詳情頁面查看。
        factory.setHost("xxx.xxx.aliyuncs.com");
        // 用戶名,在消息隊列RabbitMQ版控制臺靜態用戶名密碼頁面查看。
        factory.setUsername("${UserName}");
        // 密碼,在消息隊列RabbitMQ版控制臺靜態用戶名密碼頁面查看。
        factory.setPassword("${PassWord}");
        //設置為true,開啟Connection自動恢復功能;設置為false,關閉Connection自動恢復功能。
        factory.setAutomaticRecoveryEnabled(true);
        factory.setNetworkRecoveryInterval(5000);
        // 設置Vhost名稱,請確保已在消息隊列RabbitMQ版控制臺上創建完成。
        factory.setVirtualHost("${VhostName}");
        // 默認端口,非加密端口5672,加密端口5671。
        factory.setPort(5672);
        // 基于網絡環境合理設置超時時間。
        factory.setConnectionTimeout(30 * 1000);
        factory.setHandshakeTimeout(30 * 1000);
        factory.setShutdownTimeout(0);
        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();        
        channel.exchangeDeclare("${ExchangeName}", "${ExchangeType}", true, false, false, null);
        channel.queueDeclare("${QueueName}", true, false, false, new HashMap<String, Object>());
        channel.queueBind("${QueueName}", "${ExchangeName}", "${BindingKey}");
        // 開始發送消息。
        for (int i = 0; i < 100; i++  ) {
            // ${ExchangeName}必須在消息隊列RabbitMQ版控制臺上已存在,并且Exchange的類型與控制臺上的類型一致。
            // BindingKey根據業務需求填入相應的BindingKey。
            AMQP.BasicProperties props = new AMQP.BasicProperties.Builder().messageId(UUID.randomUUID().toString()).build();
            channel.basicPublish("${ExchangeName}", "${BindingKey}", true, props,
                    ("消息發送Body"  + i).getBytes(StandardCharsets.UTF_8));
        }
        connection.close();
    }
}

結果驗證

您可以在函數計算控制臺使用表盤解讀數據指標。

  1. 登錄函數計算控制臺。
  2. 在左側導航欄,單擊服務及函數。
  3. 在頂部菜單欄,選擇地域。
  4. 服務列表頁面,找到目標服務,在其右側操作列單擊函數管理。
  5. 函數管理頁面,找到目標函數,單擊目標函數名稱。
  6. 函數詳情頁面,單擊調用日志頁簽,查看日志。
    FC Invoke Start RequestId: c2be67a7-fh1a-9619-ei4c-3c04gcf6****
    2020-11-19T11:11:34.161Z c2be67a7-fh1a-9619-ei4c-3c04gcf6c**** [verbose] Receive Event v2 ==> The event comes from aliyun.ui,event type is ui:Created:PostObject.
    2020-11-19T11:11:34.167Z c2be67a7-fh1a-9619-ei4c-3c04gcf6c**** 
    FC Invoke End RequestId: c2be67a7-fh1a-9619-ei4c-3c04gcf6c****

常見問題

事件發布失敗,我該如何定位問題?

如果事件發布失敗,您可以查看事件軌跡,在事件軌跡頁面的事件投遞區域查看投遞詳情,獲取投遞響應。針對不同投遞響應提示,采取相應的解決措施。

發布到函數計算的事件發布失敗,且投遞響應為[500]ConnectErrorconnectiontimedout,我該如何處理?

您可以按照以下步驟處理:
  1. 登錄函數計算控制臺,執行目標函數并觀察執行時間。
  2. 如果函數執行時間大于15s,請排查網絡問題;如果函數執行時間小于15s,請確認您是否可以訪問函數計算服務所屬地域的Endpoint。
  3. 如您不能訪問當前函數計算服務所屬地域的Endpoint,請聯系函數計算工程師處理。