# 异常数据转发目标
#### 概述
在数据被转发至华为云其他服务或第三方应用时，若由于云服务权限不足、 华为云其他服务或第三方应用不可用等原因导致目标服务器不可达，物联网平台会停止消息的推送，并每三分钟进行一次通道恢复探测，若探测成功，通道将恢复正常使用。如果用户消息实时性要求高，为降低通道故障对业务的影响，用户可通过配置异常数据转发目标来获取异常转发数据，以便继续进行业务处理和分析失败原因，从而降低因单一通道异常而对业务产生的影响。
图1异常数据转发目标示例   
![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001992563028.png "点击放大")
![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
在转发规则配置异常数据转发目标后，24小时内若正常数据转发目标不可达，数据将会被直接推送至异常数据转发目标。若超过24小时正常数据转发目标仍未恢复，物联网平台将暂停数据推送。
#### 使用限制
- 当且仅当存在一个正常数据转发目标时，支持添加一个异常数据转发目标。
- 每个IoTDA实例最多支持创建5个异常数据转发目标。
- 支持异常数据转发目标的规则数据来源：设备、设备属性、设备消息、设备消息状态、设备状态、批量任务、产品和设备异步命令状态。
- 支持配置异常数据转发的正常转发目标类型：数据接入服务（DIS）、分布式消息服务（Kafka）、对象存储服务（OBS）、应用与数据集成平台（ROMA Connect）、第三方应用服务（HTTP推送）、分布式消息服务（RocketMQ）、函数工作流服务 （FunctionGraph）、云数据库（GeminiDB Influx）、云数据库 MySQL（RDS）、云数据库 PostgreSQL（RDS）、MapReduce服务（MRS Kafka）、区块链服务（BCS）和文档数据库服务（DDS）。
- 支持作为异常转发目标的通道类型：AMQP推送消息队列。
 
#### 异常转发数据格式
异常转发数据格式示例如下：
```
{
    "request_id": "2131d048-234f-4564-9190-6030234678ad",
    "rule_id": "6519d048-3b7f-442b-9190-6030773879cc",
    "action_id": "f376ab9f-d060-4fbf-a383-3e52af98ae9d",
    "channel": "MYSQL_FORWARDING",
    "base64_original_payload": "ewogICAgInJlc291cmNlIjogImRldmljZS5tZXNzYWdlIiwKICAgICJldmVudCI6ICJyZXBvcnQiLAogICAgImV2ZW50X3RpbWUiOiAiMjAyNDA2MDFUMDAwMDAwWiIsCiAgICAiZXZlbnRfdGltZV9tcyI6ICIyMDI0LTA2LTAxVDAwOjAwOjAwLjAwMFoiLAogICAgInJlcXVlc3RfaWQiOiAiMjEzMWQwNDgtMjM0Zi00NTY0LTkxOTAtNjAzMDIzNDY3OGFkIiwKICAgICJub3RpZnlfZGF0YSI6IHsKICAgICAgICAiaGVhZGVyIjogewogICAgICAgICAgICAiYXBwX2lkIjogIjU4N2MyMzc3ZGRmYzQzMmI4OTMxZGNhYmNhODkyOTUyIiwKICAgICAgICAgICAgImRldmljZV9pZCI6ICIwMDAwMDAwMDAwMDAwMCIsCiAgICAgICAgICAgICJub2RlX2lkIjogIjIwMjAwNzExMTk5OTkxMDAwIiwKICAgICAgICAgICAgInByb2R1Y3RfaWQiOiAiMTIzNDU2Nzg5MDAiLAogICAgICAgICAgICAiZ2F0ZXdheV9pZCI6ICIyMDIwMDcxMTE5OTk5MTAwMCIKICAgICAgICB9LAogICAgICAgICJib2R5IjogewogICAgICAgICAgICAidG9waWMiOiAidGVzdFRvcGljIiwKICAgICAgICAgICAgImNvbnRlbnQiOiAiV2VsY29tZSB0byBIdWF3ZWkgQ2xvdWQgSW9UIERldmljZSBBY2Nlc3MoSW9UREEpIgogICAgICAgIH0KICAgIH0KfQo=",
    "error_message": "Push failed. Cause:  Table 'xxx' doesn't exist. The iot platform will resume the push within 3 minutes after the channel is restored."
}
```
表1异常转发数据说明 
| 参数                      | 参数类型   | 描述                                                        |
|:---|:---|:---|
| request_id              | String | **参数说明：**推送异常的消息ID，由设备侧指定或平台生成，用于跟踪业务流程。                    |
| rule_id               | String | **参数说明：**推送异常的规则触发条件ID，用于唯一标识一条规则触发条件，在创建规则时由物联网平台分配获得。    |
| action_id              | String | **参数说明：**推送异常的数据转发目标ID，用于唯一标识一个数据转发目标，在创建数据转发目标时由物联网平台分配获得。 |
| channel                 | String | **参数说明：**推送异常的数据转发目标类型。                                     |
| base64_original_payload | String | **参数说明：**经过Base64编码的原始流转数据。                               |
| error_message            | String | **参数说明：**错误的描述和说明。                                       |
   
![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
异常转发数据格式可能存在增加字段的情况，在使用的时候务必做好序列化兼容性。
#### 操作步骤
1. 访问[设备接入服务](https://www.huaweicloud.com/product/iothub.html)，单击"管理控制台"进入设备接入控制台。选择您的实例，单击实例卡片进入。
2. 选择"规则 \> 数据转发" ，进入数据转发界面，单击 "创建规则" ，进入规则创建界面。 
   图2数据转发-创建规则   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001885770312.png "点击放大")
   
   
3. 在新建数据转发规则界面中填写相关信息后，单击"创建规则"完成规则创建。 
   图3新建消息上报流转规则-数据转发至Kafka   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001885930184.png "点击放大")
   
   
4. 创建完成规则后，进入设置转发目标页面，单击"添加"，添加一个正常数据转发目标。 
   图4添加正常数据转发目标   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000002356525857.png "点击放大")
   
   
5. 添加完成后，可以单击"添加"，添加一个异常数据转发目标。 
   图5添加异常数据转发目标   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000002356518313.png "点击放大")
   
   
6. 添加完成后单击"启动规则"进行规则激活。 
   图6数据转发-启动规则   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001950393328.png "点击放大")
   
   
 
