You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by aa...@apache.org on 2023/03/06 04:54:44 UTC

[rocketmq-clients] 03/05: Allow user to disable TLS

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 <ya...@gmail.com>
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>