CAP
●CAP docs看到更多详细资料。
●CAP 视频教程,学习如何在项目中集成CAP。
●GitHub源码:https://github.com/dotnetcore/cap
●示例代码:https://github.com/dotnetcore/CAP/tree/master/samples
CAP 运输器
通过运输将数据从一个地方移动到另一个地方-在采集程序和管道之间,管道与实体数据库之间,甚至在管道与外部系统之间。
怎么选择运输器
| 🏳🌈 | RabbitMQ | Kafka | Azure Service Bus | In-Memory |
|---|---|---|---|---|
| 定位 | 可靠消息传输 | 实时数据处理 | 云 | 内存型,测试 |
| 分布式 | ✔ | ✔ | ✔ | ❌ |
| 持久化 | ✔ | ✔ | ✔ | ❌ |
| 性能 | Medium | High | Medium | High |
RabbitMQ
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ 服务器是用 Erlang 语言编写的,而聚类和故障转移是构建在开源的通讯平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
CAP 支持使用 RabbitMQ 作为消息传输器。
RabbitMQ Options
CAP 直接对外提供的 RabbitMQ 配置参数如下:
| NAME | DESCRIPTION | TYPE | DEFAULT |
|---|---|---|---|
| HostName | 宿主地址,配置集群可以使用逗号分隔,如 192.168.1.111,192.168.1.112 | string | localhost |
| UserName | 用户名 | string | guest |
| Password | 密码 | string | guest |
| VirtualHost | 虚拟主机 | string | / |
| Port | 端口号 | int | -1 |
| ExchangeName | CAP默认Exchange名称 | string | cap.default.topic |
| QueueArguments | 创建队列额外参数 x-arguments | QueueArgumentsOptions | N/A |
| ConnectionFactoryOptions | RabbitMQClient原生参数 | ConnectionFactory | N/A |
| CustomHeaders | 订阅者自定义头信息 | Func |
N/A |
CustomHeaders Options
当需要从异构系统或者直接接收从RabbitMQ 控制台发送的消息时,由于 CAP 需要定义额外的头信息才能正常订阅,所以此时会出现异常。通过提供此参数来进行自定义头信息的设置来使订阅者正常工作。
你可以在这里找到有关 头信息 的说明。
用法如下:
config.UseRabbitMQ(o =>{o.CustomHeaders = e => new List<KeyValuePair<string, string>>{new KeyValuePair<string, string>(Headers.MessageId, SnowflakeId.Default().NextId().ToString()),new KeyValuePair<string, string>(Headers.MessageName, e.RoutingKey),};});
连接 RabbitMQ 集群
使用逗号分隔连接字符串即可,如下:
x=> x.UseRabbitMQ("localhost:5672,localhost:5673,localhost:5674")
