```xml
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>rabbitmq-solon-cloud-plugin</artifactId>
</dependency>
```

#### 1、描述

分布式扩展插件。基于 rabbitmq client 适配的 solon cloud 插件。提供事件总线服务。


#### 2、能力支持

| 云端能力接口 | 说明 | 备注 |
| -------- | -------- | -------- |
| CloudEventService        | 云端事件服务	            |  支持 namespace（即 virtualHost）；支持 group     |


#### 3、配置示例

简要配置

```yml
solon.app:
  group: demo       #配置服务使用的默认组
  name: helloproducer    #发现服务使用的应用名

solon.cloud.rabbitmq:
  server: localhost:5672   #rabbitmq 服务地址
  username: root           #rabbitmq 链接账号
  password: 123456         #rabbitmq 链接密码
```


更多的可选配置

```yml
solon.app:
  group: demo       #配置服务使用的默认组
  name: helloproducer    #发现服务使用的应用名

solon.cloud.rabbitmq:
  server: localhost:5672   #rabbitmq 服务地址
  username: root           #rabbitmq 链接账号
  password: 123456         #rabbitmq 链接密码
  event:  #v2.4.4 后调整为：(与应用基本信息结合起来)
      publishTimeout: 3000                       #发布超时，默认为3000毫秒
      virtualHost: "${solon.app.nameSpace}"      #虚拟主机，默认为应用命名空间（当为空时，则为"/"）
      exchange:  "${solon.app.group}"            #交换机名，默认为应用组
      queue:  "${exchange}_${solon.app_name}"    #队列名，默认为交换机_应用名
      #提示：每个队列名，会生成三个队列（用于实现 retry 效果）
```

#### 4、应用示例

```java
//订阅
@CloudEvent(topic="hello.demo2", group = "test")
public class EVENT_hello_demo2 implements CloudEventHandler {
    @Override
    public boolean handle(Event event) throws Throwable {
        System.out.println(LocalDateTime.now() + ONode.stringify(event));
        return true;
    }
}

//发布（找个地方发放一下）
Event event = new Event("hello.demo2", msg).group("test");
return CloudClient.event().publish(event);


//发布 - 定时10天后发（找个地方发放一下）
Event event = new Event("hello.demo2", msg).group("test");
Date eventTime = DateTime.Now().addDay(10);
return CloudClient.event().publish(event.scheduled(eventTime));
```

