Sfoglia il codice sorgente

Refactor KafkaOptions

master
yangxiaodong 7 anni fa
parent
commit
98cd5861a4
8 ha cambiato i file con 43 aggiunte e 35 eliminazioni
  1. +1
    -1
      src/DotNetCore.CAP.EntityFrameworkCore/ConsistencyMessageStore.cs
  2. +0
    -1
      src/DotNetCore.CAP.Kafka/CAP.BuilderExtensions.cs
  3. +34
    -18
      src/DotNetCore.CAP.Kafka/CAP.KafkaOptions.cs
  4. +1
    -1
      src/DotNetCore.CAP.Kafka/IProcessor.KafkaJobProcessor.cs
  5. +3
    -5
      src/DotNetCore.CAP.Kafka/KafkaConsumerClient.cs
  6. +2
    -6
      src/DotNetCore.CAP.RabbitMQ/CAP.RabbiMQOptions.cs
  7. +1
    -2
      src/DotNetCore.CAP.RabbitMQ/RabbitMQConsumerClientFactory.cs
  8. +1
    -1
      src/DotNetCore.CAP/CAP.Options.cs

+ 1
- 1
src/DotNetCore.CAP.EntityFrameworkCore/ConsistencyMessageStore.cs Vedi File

@@ -35,7 +35,7 @@ namespace DotNetCore.CAP.EntityFrameworkCore
public async Task<OperateResult> StoreSentMessageAsync(CapSentMessage message) public async Task<OperateResult> StoreSentMessageAsync(CapSentMessage message)
{ {
if (message == null) throw new ArgumentNullException(nameof(message)); if (message == null) throw new ArgumentNullException(nameof(message));
Context.Add(message); Context.Add(message);
await Context.SaveChangesAsync(); await Context.SaveChangesAsync();
return OperateResult.Success; return OperateResult.Success;


+ 0
- 1
src/DotNetCore.CAP.Kafka/CAP.BuilderExtensions.cs Vedi File

@@ -18,7 +18,6 @@ namespace Microsoft.Extensions.DependencyInjection
/// <returns>An <see cref="CapBuilder"/> for creating and configuring the CAP system.</returns> /// <returns>An <see cref="CapBuilder"/> for creating and configuring the CAP system.</returns>
public static CapBuilder AddKafka(this CapBuilder builder, Action<KafkaOptions> setupAction) public static CapBuilder AddKafka(this CapBuilder builder, Action<KafkaOptions> setupAction)
{ {

if (setupAction == null) throw new ArgumentNullException(nameof(setupAction)); if (setupAction == null) throw new ArgumentNullException(nameof(setupAction));


builder.Services.Configure(setupAction); builder.Services.Configure(setupAction);


+ 34
- 18
src/DotNetCore.CAP.Kafka/CAP.KafkaOptions.cs Vedi File

@@ -1,33 +1,49 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text;
using System.Linq;


namespace DotNetCore.CAP.Kafka namespace DotNetCore.CAP.Kafka
{ {
/// <summary>
/// Provides programmatic configuration for the CAP kafka project.
/// </summary>
public class KafkaOptions public class KafkaOptions
{ {
/// <summary>
/// Gets the Kafka broker id.
/// </summary>
public int BrokerId { get; }
public KafkaOptions()
{
MainConfig = new Dictionary<string, object>();
}


/// <summary> /// <summary>
/// Gets the Kafka broker hostname.
/// librdkafka configuration parameters (refer to https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md).
/// <para>
/// Topic configuration parameters are specified via the "default.topic.config" sub-dictionary config parameter.
/// </para>
/// </summary> /// </summary>
public string Host { get; }
public IDictionary<string, object> MainConfig { get; private set; }


/// <summary> /// <summary>
/// Gets the Kafka broker port.
/// The `bootstrap.servers` item config of `MainConfig`.
/// <para>
/// Initial list of brokers as a CSV list of broker host or host:port.
/// </para>
/// </summary> /// </summary>
public int Port { get; }
public string Servers { get; set; }


/// <summary>
/// Returns a JSON representation of the BrokerMetadata object.
/// </summary>
/// <returns>
/// A JSON representation of the BrokerMetadata object.
/// </returns>
public override string ToString()
=> $"{{ \"BrokerId\": {BrokerId}, \"Host\": \"{Host}\", \"Port\": {Port} }}";
internal IEnumerable<KeyValuePair<string, object>> AsRdkafkaConfig()
{
if (!MainConfig.ContainsKey("bootstrap.servers"))
{
if (string.IsNullOrEmpty(Servers))
{
throw new ArgumentNullException(nameof(Servers));
}
else
{
MainConfig.Add("bootstrap.servers", Servers);
}
}
return MainConfig.AsEnumerable();
}
} }
}
}

+ 1
- 1
src/DotNetCore.CAP.Kafka/IProcessor.KafkaJobProcessor.cs Vedi File

@@ -123,7 +123,7 @@ namespace DotNetCore.CAP.Kafka
{ {
try try
{ {
var config = new Dictionary<string, object> { { "bootstrap.servers", _kafkaOptions.Host } };
var config = _kafkaOptions.AsRdkafkaConfig();
using (var producer = new Producer<Null, string>(config, null, new StringSerializer(Encoding.UTF8))) using (var producer = new Producer<Null, string>(config, null, new StringSerializer(Encoding.UTF8)))
{ {
var message = producer.ProduceAsync(topic, null, content).Result; var message = producer.ProduceAsync(topic, null, content).Result;


+ 3
- 5
src/DotNetCore.CAP.Kafka/KafkaConsumerClient.cs Vedi File

@@ -1,5 +1,4 @@
using System; using System;
using System.Collections.Generic;
using System.Text; using System.Text;
using Confluent.Kafka; using Confluent.Kafka;
using Confluent.Kafka.Serialization; using Confluent.Kafka.Serialization;
@@ -56,12 +55,11 @@ namespace DotNetCore.CAP.Kafka


private void InitKafkaClient() private void InitKafkaClient()
{ {
var config = new Dictionary<string, object>{
{ "group.id", _groupId },
{ "bootstrap.servers", _kafkaOptions.Host }
};
_kafkaOptions.MainConfig.Add("group.id", _groupId);


var config = _kafkaOptions.AsRdkafkaConfig();
_consumerClient = new Consumer<Null, string>(config, null, StringDeserializer); _consumerClient = new Consumer<Null, string>(config, null, StringDeserializer);

_consumerClient.OnMessage += ConsumerClient_OnMessage; _consumerClient.OnMessage += ConsumerClient_OnMessage;
} }




+ 2
- 6
src/DotNetCore.CAP.RabbitMQ/CAP.RabbiMQOptions.cs Vedi File

@@ -1,8 +1,4 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace DotNetCore.CAP.RabbitMQ
namespace DotNetCore.CAP.RabbitMQ
{ {
public class RabbitMQOptions public class RabbitMQOptions
{ {
@@ -68,4 +64,4 @@ namespace DotNetCore.CAP.RabbitMQ
/// </summary> /// </summary>
public int Port { get; set; } = -1; public int Port { get; set; } = -1;
} }
}
}

+ 1
- 2
src/DotNetCore.CAP.RabbitMQ/RabbitMQConsumerClientFactory.cs Vedi File

@@ -1,5 +1,4 @@
using DotNetCore.CAP.Infrastructure;
using Microsoft.Extensions.Options;
using Microsoft.Extensions.Options;


namespace DotNetCore.CAP.RabbitMQ namespace DotNetCore.CAP.RabbitMQ
{ {


+ 1
- 1
src/DotNetCore.CAP/CAP.Options.cs Vedi File

@@ -7,7 +7,7 @@ namespace DotNetCore.CAP.Infrastructure
/// </summary> /// </summary>
public class CapOptions public class CapOptions
{ {
/// <summary>
/// <summary>
/// Corn expression for configuring retry cron job. Default is 1 min. /// Corn expression for configuring retry cron job. Default is 1 min.
/// </summary> /// </summary>
public string CronExp { get; set; } = Cron.Minutely(); public string CronExp { get; set; } = Cron.Minutely();


Caricamento…
Annulla
Salva