Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

3.配置.md 4.0 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. ## 3、配置
  2. Cap 使用 Microsoft.Extensions.DependencyInjection 进行配置的注入,你也可以依赖于 DI 从json文件中读取配置。
  3. ### 3.1 Cap Options
  4. 你可以使用如下方式来配置 CAP 中的一些配置项,例如
  5. ```cs
  6. services.AddCap(capOptions => {
  7. capOptions.FailedCallback = //...
  8. });
  9. ```
  10. `CapOptions` 提供了一下配置项:
  11. NAME | DESCRIPTION | TYPE | DEFAULT
  12. :---|:---|---|:---
  13. PollingDelay | 处理消息的线程默认轮询等待时间(秒) | int | 15 秒
  14. QueueProcessorCount | 启动队列中消息的处理器个数 | int | 2
  15. FailedMessageWaitingInterval| 轮询失败消息的间隔(秒) | int | 180 秒
  16. FailedCallback| 执行失败消息时的回调函数,详情见下文 | Action | NULL
  17. CapOptions 提供了 `FailedCallback` 为处理失败的消息时的回调函数。当消息多次发送失败后,CAP会将消息状态标记为`Failed`,CAP有一个专门的处理者用来处理这种失败的消息,针对失败的消息会重新放入到队列中发送到MQ,在这之前如果`FailedCallback`具有值,那么将首先调用此回调函数来告诉客户端。
  18. FailedCallback 的类型为 `Action<MessageType,string,string>`,第一个参数为消息类型(发送的还是接收到),第二个参数为消息的名称(name),第三个参数为消息的内容(content)。
  19. ### 3.2 RabbitMQ Options
  20. CAP 采用的是针对 CapOptions 进行扩展来实现RabbitMQ的配置功能,所以针对 RabbitMQ 的配置用法如下:
  21. ```cs
  22. services.AddCap(capOptions => {
  23. capOptions.UseRabbitMQ(rabbitMQOption=>{
  24. // rabbitmq options.
  25. });
  26. });
  27. ```
  28. `RabbitMQOptions` 提供了有关RabbitMQ相关的配置:
  29. NAME | DESCRIPTION | TYPE | DEFAULT
  30. :---|:---|---|:---
  31. HostName | 宿主地址 | string | localhost
  32. UserName | 用户名 | string | guest
  33. Password | 密码 | string | guest
  34. VirtualHost | 虚拟主机 | string | /
  35. Port | 端口号 | int | -1
  36. TopicExchangeName | CAP默认Exchange名称 | string | cap.default.topic
  37. RequestedConnectionTimeout | RabbitMQ连接超时时间 | int | 30,000 毫秒
  38. SocketReadTimeout | RabbitMQ消息读取超时时间 | int | 30,000 毫秒
  39. SocketWriteTimeout | RabbitMQ消息写入超时时间 | int | 30,000 毫秒
  40. QueueMessageExpires | 队列中消息自动删除时间 | int | (10天) 毫秒
  41. ### 3.3 Kafka Options
  42. CAP 采用的是针对 CapOptions 进行扩展来实现 Kafka 的配置功能,所以针对 Kafka 的配置用法如下:
  43. ```cs
  44. services.AddCap(capOptions => {
  45. capOptions.UseKafka(kafkaOption=>{
  46. // kafka options.
  47. // kafkaOptions.MainConfig.Add("", "");
  48. });
  49. });
  50. ```
  51. `KafkaOptions` 提供了有关 Kafka 相关的配置,由于Kafka的配置比较多,所以此处使用的是提供的 MainConfig 字典来支持进行自定义配置,你可以查看这里来获取对配置项的支持信息。
  52. [https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md](https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md)
  53. ### 3.4 SqlServer Options
  54. 如果你使用的是 EntityFramewrok,你用不到该配置项下的内容。
  55. CAP 采用的是针对 CapOptions 进行扩展来实现 SqlServer 的配置功能,所以针对 SqlServer 的配置用法如下:
  56. ```cs
  57. services.AddCap(capOptions => {
  58. capOptions.UseSqlServer(sqlserverOptions => {
  59. // sqlserverOptions.ConnectionString
  60. });
  61. });
  62. ```
  63. NAME | DESCRIPTION | TYPE | DEFAULT
  64. :---|:---|---|:---
  65. Schema | Cap表架构 | string | Cap
  66. ConnectionString | 数据库连接字符串 | string | null
  67. ### 3.5 MySql Options
  68. 如果你使用的是 EntityFramewrok,你用不到该配置项下的内容。
  69. CAP 采用的是针对 CapOptions 进行扩展来实现 MySql 的配置功能,所以针对 MySql 的配置用法如下:
  70. ```cs
  71. services.AddCap(capOptions => {
  72. capOptions.UseMySql(mysqlOptions => {
  73. // mysqlOptions.ConnectionString
  74. });
  75. });
  76. ```
  77. NAME | DESCRIPTION | TYPE | DEFAULT
  78. :---|:---|---|:---
  79. TableNamePrefix | Cap表名前缀 | string | cap
  80. ConnectionString | 数据库连接字符串 | string | null