This is an automated email from the ASF dual-hosted git repository. aaronai pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/rocketmq-clients.git
commit 0a02f18a7d7da2f27c8a0ca3e8ad131fade5dfb1 Author: Aaron Ai <[email protected]> AuthorDate: Mon Mar 6 10:53:18 2023 +0800 Allow user to disable TLS --- csharp/README.md | 2 +- csharp/examples/ProducerBenchmark.cs | 2 +- csharp/examples/ProducerNormalMessageExample.cs | 10 +++++++-- csharp/examples/QuickStart.cs | 6 +++--- csharp/rocketmq-client-csharp/ClientConfig.cs | 15 ++++++++++++-- csharp/rocketmq-client-csharp/ClientManager.cs | 4 ++-- .../rocketmq-client-csharp/ClientMeterManager.cs | 2 +- csharp/rocketmq-client-csharp/Endpoints.cs | 23 ++++++++++++--------- csharp/rocketmq-client-csharp/RpcClient.cs | 4 ++-- csharp/rocketmq-client-csharp/logo.png | Bin 0 -> 83556 bytes .../rocketmq-client-csharp.csproj | 7 ++++++- 11 files changed, 50 insertions(+), 25 deletions(-) diff --git a/csharp/README.md b/csharp/README.md index 3de6bc65..d536cfb8 100644 --- a/csharp/README.md +++ b/csharp/README.md @@ -18,7 +18,7 @@ The client would be developed using the protocols outlined in [rocketmq-apis](ht dotnet add package RocketMQ.Client ``` -You can obtain the latest version of `RocketMQ.Client` from [NuGet Gallery](https://www.nuget.org/packages/RocketMQ.Client). To assist with getting started quickly and working with various message types and clients, we offer examples [here](./examples) here. +You can obtain the latest version of `RocketMQ.Client` from [NuGet Gallery](https://www.nuget.org/packages/RocketMQ.Client). To assist with getting started quickly and working with various message types and clients, we offer examples [here](./examples). ## Build diff --git a/csharp/examples/ProducerBenchmark.cs b/csharp/examples/ProducerBenchmark.cs index 50559e31..fc8d3b98 100644 --- a/csharp/examples/ProducerBenchmark.cs +++ b/csharp/examples/ProducerBenchmark.cs @@ -91,7 +91,7 @@ namespace examples var tasks = new List<Task>(); while (true) { - Semaphore.Wait(); + await Semaphore.WaitAsync(); Interlocked.Increment(ref _counter); var task = producer.Send(message); tasks.Add(task); diff --git a/csharp/examples/ProducerNormalMessageExample.cs b/csharp/examples/ProducerNormalMessageExample.cs index aad9fc56..7cd3fabb 100644 --- a/csharp/examples/ProducerNormalMessageExample.cs +++ b/csharp/examples/ProducerNormalMessageExample.cs @@ -15,6 +15,7 @@ * limitations under the License. */ +using System; using System.Text; using System.Threading.Tasks; using NLog; @@ -60,8 +61,13 @@ namespace examples .SetKeys("yourMessageKey-7044358f98fc") .Build(); - var sendReceipt = await producer.Send(message); - Logger.Info($"Send message successfully, sendReceipt={sendReceipt}"); + for (int i = 0; i < 99999999; i++) + { + var sendReceipt = await producer.Send(message); + Logger.Info($"Send message successfully, sendReceipt={sendReceipt}"); + await Task.Delay(TimeSpan.FromSeconds(1)); + } + // Or you could close the producer manually. // await producer.DisposeAsync(); } diff --git a/csharp/examples/QuickStart.cs b/csharp/examples/QuickStart.cs index 174fccd2..d9730cff 100644 --- a/csharp/examples/QuickStart.cs +++ b/csharp/examples/QuickStart.cs @@ -22,9 +22,9 @@ namespace examples public static void Main() { ProducerNormalMessageExample.QuickStart().Wait(); - // await ProducerFifoMessageExample.QuickStart(); - // await ProducerDelayMessageExample.QuickStart(); - // await SimpleConsumerExample.QuickStart(); + // ProducerFifoMessageExample.QuickStart().Wait(); + // ProducerDelayMessageExample.QuickStart().Wait(); + // SimpleConsumerExample.QuickStart().Wait(); // ProducerBenchmark.QuickStart().Wait(); } } diff --git a/csharp/rocketmq-client-csharp/ClientConfig.cs b/csharp/rocketmq-client-csharp/ClientConfig.cs index dc73b2da..609ad1d7 100644 --- a/csharp/rocketmq-client-csharp/ClientConfig.cs +++ b/csharp/rocketmq-client-csharp/ClientConfig.cs @@ -21,11 +21,13 @@ namespace Org.Apache.Rocketmq { public class ClientConfig : IClientConfig { - private ClientConfig(ISessionCredentialsProvider sessionCredentialsProvider, TimeSpan requestTimeout, string endpoints) + private ClientConfig(ISessionCredentialsProvider sessionCredentialsProvider, TimeSpan requestTimeout, + string endpoints, bool sslEnabled) { SessionCredentialsProvider = sessionCredentialsProvider; RequestTimeout = requestTimeout; Endpoints = endpoints; + SslEnabled = sslEnabled; } public ISessionCredentialsProvider SessionCredentialsProvider { get; } @@ -34,11 +36,14 @@ namespace Org.Apache.Rocketmq public string Endpoints { get; } + public bool SslEnabled { get; } + public class Builder { private ISessionCredentialsProvider _sessionCredentialsProvider; private TimeSpan _requestTimeout = TimeSpan.FromSeconds(3); private string _endpoints; + private bool _sslEnabled; public Builder SetCredentialsProvider(ISessionCredentialsProvider sessionCredentialsProvider) { @@ -58,9 +63,15 @@ namespace Org.Apache.Rocketmq return this; } + public Builder EnableSsl(bool sslEnabled) + { + _sslEnabled = sslEnabled; + return this; + } + public ClientConfig Build() { - return new ClientConfig(_sessionCredentialsProvider, _requestTimeout, _endpoints); + return new ClientConfig(_sessionCredentialsProvider, _requestTimeout, _endpoints, _sslEnabled); } } } diff --git a/csharp/rocketmq-client-csharp/ClientManager.cs b/csharp/rocketmq-client-csharp/ClientManager.cs index da46af30..498beef8 100644 --- a/csharp/rocketmq-client-csharp/ClientManager.cs +++ b/csharp/rocketmq-client-csharp/ClientManager.cs @@ -20,7 +20,7 @@ using System; using System.Threading; using System.Threading.Tasks; using grpc = Grpc.Core; -using System.Collections.Generic; +using System.Collections.Generic; namespace Org.Apache.Rocketmq { @@ -63,7 +63,7 @@ namespace Org.Apache.Rocketmq } // client does not exist, generate a new one - var client = new RpcClient(endpoints); + var client = new RpcClient(endpoints, _client.GetClientConfig().SslEnabled); _rpcClients.Add(endpoints, client); return client; } diff --git a/csharp/rocketmq-client-csharp/ClientMeterManager.cs b/csharp/rocketmq-client-csharp/ClientMeterManager.cs index 67801335..e8eed8d8 100644 --- a/csharp/rocketmq-client-csharp/ClientMeterManager.cs +++ b/csharp/rocketmq-client-csharp/ClientMeterManager.cs @@ -80,7 +80,7 @@ namespace Org.Apache.Rocketmq .AddOtlpExporter(delegate(OtlpExporterOptions options, MetricReaderOptions readerOptions) { options.Protocol = OtlpExportProtocol.Grpc; - options.Endpoint = new Uri(metric.Endpoints.GrpcTarget); + options.Endpoint = new Uri(metric.Endpoints.GrpcTarget(_client.GetClientConfig().SslEnabled)); options.TimeoutMilliseconds = (int)_client.GetClientConfig().RequestTimeout.TotalMilliseconds; options.HttpClientFactory = () => _httpClient; readerOptions.PeriodicExportingMetricReaderOptions.ExportIntervalMilliseconds = diff --git a/csharp/rocketmq-client-csharp/Endpoints.cs b/csharp/rocketmq-client-csharp/Endpoints.cs index 27130a33..8d560494 100644 --- a/csharp/rocketmq-client-csharp/Endpoints.cs +++ b/csharp/rocketmq-client-csharp/Endpoints.cs @@ -118,21 +118,24 @@ namespace Org.Apache.Rocketmq public override string ToString() { - return GrpcTarget; + foreach (var address in Addresses) + { + return address.Host + EndpointSeparator + address.Port; + } + + throw new ArgumentException("No available address"); } - // TODO: Support non-TLS and multiple addresses. - public string GrpcTarget + // TODO: Support multiple addresses. + public string GrpcTarget(bool sslEnabled) { - get + var prefix = sslEnabled ? HttpsPrefix : HttpPrefix; + foreach (var address in Addresses) { - foreach (var address in Addresses) - { - return HttpsPrefix + address.Host + EndpointSeparator + address.Port; - } - - return ""; + return prefix + address.Host + EndpointSeparator + address.Port; } + + throw new ArgumentException("No available address"); } public bool Equals(Endpoints other) diff --git a/csharp/rocketmq-client-csharp/RpcClient.cs b/csharp/rocketmq-client-csharp/RpcClient.cs index 47db6830..e4c230b2 100644 --- a/csharp/rocketmq-client-csharp/RpcClient.cs +++ b/csharp/rocketmq-client-csharp/RpcClient.cs @@ -36,9 +36,9 @@ namespace Org.Apache.Rocketmq private readonly GrpcChannel _channel; private readonly string _target; - public RpcClient(Endpoints endpoints) + public RpcClient(Endpoints endpoints, bool sslEnabled) { - _target = endpoints.GrpcTarget; + _target = endpoints.GrpcTarget(sslEnabled); _channel = GrpcChannel.ForAddress(_target, new GrpcChannelOptions { HttpHandler = CreateHttpHandler() diff --git a/csharp/rocketmq-client-csharp/logo.png b/csharp/rocketmq-client-csharp/logo.png new file mode 100644 index 00000000..9ba4581d Binary files /dev/null and b/csharp/rocketmq-client-csharp/logo.png differ diff --git a/csharp/rocketmq-client-csharp/rocketmq-client-csharp.csproj b/csharp/rocketmq-client-csharp/rocketmq-client-csharp.csproj index ab50f685..94c2d718 100644 --- a/csharp/rocketmq-client-csharp/rocketmq-client-csharp.csproj +++ b/csharp/rocketmq-client-csharp/rocketmq-client-csharp.csproj @@ -14,7 +14,8 @@ <Description>.NET Client for Apache RocketMQ</Description> <PackageProjectUrl>https://github.com/apache/rocketmq-clients</PackageProjectUrl> <RepositoryUrl>https://github.com/apache/rocketmq-clients</RepositoryUrl> - <PackageVersion>0.0.3-SNAPSHOT</PackageVersion> + <PackageVersion>0.0.6-SNAPSHOT</PackageVersion> + <PackageIcon>logo.png</PackageIcon> </PropertyGroup> <ItemGroup> @@ -40,6 +41,10 @@ <Link>Protos\google\rpc\status.proto</Link> <Link>Protos\google\rpc\error_details.proto</Link> </Protobuf> + <None Update="logo.png"> + <Pack>True</Pack> + <PackagePath></PackagePath> + </None> </ItemGroup> <ItemGroup>
