<a href="/article/78">特性与策略</a> |
<a href="/article/754">发产与消费</a> |
<a href="/article/558">多通道示例</a> |
<a href="/article/family-solon-cloud-event">生态 / Solon Cloud Event [传送]</a>

### 1、情况简介

使用分布式事件（或事件总线）可实现业务水平扩展、分布式事务效果（目前适配有：local, water, rabbitmq, rocketmq, mqtt, kafka，等）。


* 主要通过 CloudEventServicePlus 接口进行适配
* 使用 CloudClient.event() 获取适配实例


### 2、五个特性

* 可确认（ack）

支持是否成功消费的确认机制

* 可重试守护（retry）

消费失败后不断重发确保最终成功。此特性可支持SAGA分布式事务模型，实现**最终一致性**。事件消费时，注要**幂等性**控制。

* 可自动延时

消费失败后会自动延时（目前支持有： local, water, rabbitmq, rocketmq, rocketmq5, aliyun-ons）

* 可定时事件

比如，可设定10天后执行


* 可多插件共存（多通道模式）

支持多个插件同时存在，按业务做不同安排。例如：业务消息用 RabbitMQ，IoT消息用 Mqtt，日志用 kafka。


**支持情况**

| 适配框架 | 确认与重试守护 | 自动延时 |  定时（或延时） |  事务 |
| -------- | -------- | -------- | -------- | -------- |
| local     | 支持     | 支持     | 支持 |  /  |
| water     | 支持     | 支持     | 支持 |  /  |
| folkmq     | 支持     | 支持     | 支持 | 支持  |
| rabbitmq     | 支持     | 支持     | 支持 | 支持  |
| activemq     | 支持     | 支持     | 支持 | 支持  |
| rocketmq     | 支持     | 半支持     | 半支持（最长2小时） | /  |
| rocketmq5     | 支持     | 支持     | 支持（有最长时限） | 支持  |
| kafka     | 支持     | /     | / | 支持  |
| mqtt     | 支持     | /     | / |  /  |
| jedis     | /     | /     | / |   / |


### 3、认识注解 `@CloudEvent`



| 属性 | 说明 | 
| -------- | -------- | 
| topic     | 主题     | 
| tag     | 标签     | 
| level     | 订阅级别（instance, cluster）     | 
| group     | 分组     | 
| channel     | 通道     | 
| qos     | 服务质量（0，最多交付一次；1，至少交付一次；2，只交付一次）     | 

* level: instance（实例级，以实例 ip:port 订阅），cluster（集群级，以 appName 订阅）
* channel：多通道时有效
* qos：mqtt 时有效



### 4、失败自动延时策略（不同框架会有不同）


| 失败次数 | 延时 | 
| -------- | -------- | 
| 0     | 0s     | 
| 1     | 5s     | 
| 2     | 10s     | 
| 3     | 30s     | 
| 4     | 1m（即 1 分钟）     | 
| 5     | 2m     | 
| 6     | 5m     | 
| 7     | 10m     | 
| 8     | 30m     | 
| 9     | 1h（即 1 小时）     | 
| n     | 2h     | 



### 5、增强模式

详见： [《生态 / solon cloud / cloudevent-plus-solon-plugin》](/article/144)


### 6、多通道模式

详见： [demo9039-event_multi_channel2](https://gitee.com/noear/solon-examples/tree/main/9.Solon-Cloud/demo9039-event_multi_channel2)

### 7、代码演示

* [demo9029-event_folkmq](https://gitee.com/noear/solon-examples/tree/main/9.Solon-Cloud/demo9029-event_folkmq)
* [demo9031-event_rabbitmq](https://gitee.com/noear/solon-examples/tree/main/9.Solon-Cloud/demo9031-event_rabbitmq)
* [demo9032-event_rocketmq](https://gitee.com/noear/solon-examples/tree/main/9.Solon-Cloud/demo9032-event_rocketmq)
* [demo9033-event_mqtt](https://gitee.com/noear/solon-examples/tree/main/9.Solon-Cloud/demo9033-event_mqtt)
* [demo9034-event_kafka](https://gitee.com/noear/solon-examples/tree/main/9.Solon-Cloud/demo9034-event_kafka)
* [demo9038-event_multi_channel](https://gitee.com/noear/solon-examples/tree/main/9.Solon-Cloud/demo9038-event_multi_channel)
* [demo9039-event_multi_channel2](https://gitee.com/noear/solon-examples/tree/main/9.Solon-Cloud/demo9039-event_multi_channel2)

