Skip to content

Commit d193a08

Browse files
Add code snippets for ASB Config
- Add code snippets for ASB config for all supported versions - Resolve issue with Retry Policy syntax with newer versions of ASB transport.
2 parents ee83448 + 1673fc5 commit d193a08

17 files changed

+347
-8
lines changed

Snippets/ASBS/ASBS_1.9/Usage.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Security.Cryptography;
33
using System.Text;
44
using NServiceBus;
5+
using Microsoft.Azure.ServiceBus;
56

67
class Usage
78
{
@@ -45,5 +46,18 @@ string HashName(string input)
4546
transport.SubscriptionRuleNamingConvention(t => t.FullName.Length > MaxEntityName ? HashName(t.FullName) : t.FullName);
4647

4748
#endregion
49+
50+
#region azure-service-bus-usewebsockets
51+
transport.UseWebSockets();
52+
#endregion
53+
54+
#region azure-service-bus-TimeToWaitBeforeTriggeringCircuitBreaker
55+
transport.TimeToWaitBeforeTriggeringCircuitBreaker(TimeSpan.FromMinutes(2));
56+
#endregion
57+
58+
#region azure-service-bus-RetryPolicyOptions
59+
var azureAsbRetryOptions = new Microsoft.Azure.ServiceBus.RetryExponential(new TimeSpan(0, 0, 1), TimeSpan.FromMinutes(5), 10);
60+
transport.CustomRetryPolicy(azureAsbRetryOptions);
61+
#endregion
4862
}
4963
}

Snippets/ASBS/ASBS_1/Usage.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Security.Cryptography;
33
using System.Text;
4+
using Microsoft.Azure.ServiceBus;
45
using NServiceBus;
56

67
class Usage
@@ -45,5 +46,18 @@ string HashName(string input)
4546
transport.RuleNameShortener(n => n.Length > MaxEntityName ? HashName(n) : n);
4647

4748
#endregion
49+
50+
#region azure-service-bus-usewebsockets
51+
transport.UseWebSockets();
52+
#endregion
53+
54+
#region azure-service-bus-TimeToWaitBeforeTriggeringCircuitBreaker
55+
transport.TimeToWaitBeforeTriggeringCircuitBreaker(TimeSpan.FromMinutes(2));
56+
#endregion
57+
58+
#region azure-service-bus-RetryPolicyOptions
59+
var azureAsbRetryOptions = new Microsoft.Azure.ServiceBus.RetryExponential(new TimeSpan(0, 0, 1), TimeSpan.FromMinutes(5), 10);
60+
transport.CustomRetryPolicy(azureAsbRetryOptions);
61+
#endregion
4862
}
4963
}

Snippets/ASBS/ASBS_2/Usage.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Security.Cryptography;
33
using System.Text;
4+
using Azure.Messaging.ServiceBus;
45
using NServiceBus;
56

67
class Usage
@@ -45,5 +46,24 @@ string HashName(string input)
4546
transport.SubscriptionRuleNamingConvention(t => t.FullName.Length > MaxEntityName ? HashName(t.FullName) : t.FullName);
4647

4748
#endregion
49+
50+
#region azure-service-bus-usewebsockets
51+
transport.UseWebSockets();
52+
#endregion
53+
54+
#region azure-service-bus-TimeToWaitBeforeTriggeringCircuitBreaker
55+
transport.TimeToWaitBeforeTriggeringCircuitBreaker(TimeSpan.FromMinutes(2));
56+
#endregion
57+
58+
#region azure-service-bus-RetryPolicyOptions
59+
var azureAsbRetryOptions = new Azure.Messaging.ServiceBus.ServiceBusRetryOptions
60+
{
61+
Mode = Azure.Messaging.ServiceBus.ServiceBusRetryMode.Exponential,
62+
MaxRetries = 5,
63+
Delay = TimeSpan.FromSeconds(0.8),
64+
MaxDelay = TimeSpan.FromSeconds(15)
65+
};
66+
transport.CustomRetryPolicy(azureAsbRetryOptions);
67+
#endregion
4868
}
4969
}

Snippets/ASBS/ASBS_3.2/Usage.cs

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Security.Cryptography;
33
using System.Text;
44
using Azure.Identity;
5+
using Azure.Messaging.ServiceBus;
56
using NServiceBus;
67

78
class Usage
@@ -77,5 +78,70 @@ string HashName(string input)
7778
transport.SubscriptionRuleNamingConvention = n => n.FullName.Length > MaxEntityName ? HashName(n.FullName) : n.FullName;
7879

7980
#endregion
81+
82+
#region azure-service-bus-usewebsockets
83+
transport.UseWebSockets = true;
84+
#endregion
85+
86+
#region azure-service-bus-websockets-proxy
87+
transport.WebProxy = new System.Net.WebProxy("http://myproxy:8080");
88+
#endregion
89+
90+
#region azure-service-bus-TimeToWaitBeforeTriggeringCircuitBreaker
91+
transport.TimeToWaitBeforeTriggeringCircuitBreaker = TimeSpan.FromMinutes(2);
92+
#endregion
93+
94+
#region azure-service-bus-RetryPolicyOptions
95+
var azureAsbRetryOptions = new Azure.Messaging.ServiceBus.ServiceBusRetryOptions
96+
{
97+
Mode = Azure.Messaging.ServiceBus.ServiceBusRetryMode.Exponential,
98+
MaxRetries = 5,
99+
Delay = TimeSpan.FromSeconds(0.8),
100+
MaxDelay = TimeSpan.FromSeconds(15)
101+
};
102+
transport.RetryPolicyOptions = azureAsbRetryOptions;
103+
#endregion
104+
105+
#region azure-service-bus-entitymaximumsize
106+
transport.EntityMaximumSize = 5;
107+
#endregion
108+
109+
#region azure-service-bus-enablepartitioning
110+
transport.EnablePartitioning = true;
111+
#endregion
112+
113+
#region azure-service-bus-subscriptionnameconvention
114+
string HashSubName(string input)
115+
{
116+
var inputBytes = Encoding.Default.GetBytes(input);
117+
// use MD5 hash to get a 16-byte hash of the string
118+
using (var provider = new MD5CryptoServiceProvider())
119+
{
120+
var hashBytes = provider.ComputeHash(inputBytes);
121+
return new Guid(hashBytes).ToString();
122+
}
123+
}
124+
125+
const int MaxEntityNameLength = 50;
126+
127+
transport.SubscriptionNamingConvention = n => n.Length > MaxEntityNameLength ? HashSubName(n) : n;
128+
#endregion
129+
130+
#region azure-service-bus-subscriptionrulenameconvention
131+
string HashRuleSubName(string input)
132+
{
133+
var inputBytes = Encoding.Default.GetBytes(input);
134+
// use MD5 hash to get a 16-byte hash of the string
135+
using (var provider = new MD5CryptoServiceProvider())
136+
{
137+
var hashBytes = provider.ComputeHash(inputBytes);
138+
return new Guid(hashBytes).ToString();
139+
}
140+
}
141+
142+
const int MaxSubRuleNameLength = 50;
143+
144+
transport.SubscriptionRuleNamingConvention = n => n.FullName.Length > MaxSubRuleNameLength ? HashRuleSubName(n.FullName) : n.FullName;
145+
#endregion
80146
}
81147
}

Snippets/ASBS/ASBS_3/Usage.cs

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Security.Cryptography;
33
using System.Text;
44
using Azure.Identity;
5+
using Azure.Messaging.ServiceBus;
56
using NServiceBus;
67

78
class Usage
@@ -77,5 +78,70 @@ string HashName(string input)
7778
transport.SubscriptionRuleNamingConvention = n => n.FullName.Length > MaxEntityName ? HashName(n.FullName) : n.FullName;
7879

7980
#endregion
81+
82+
#region azure-service-bus-usewebsockets
83+
transport.UseWebSockets = true;
84+
#endregion
85+
86+
#region azure-service-bus-websockets-proxy
87+
transport.WebProxy = new System.Net.WebProxy("http://myproxy:8080");
88+
#endregion
89+
90+
#region azure-service-bus-TimeToWaitBeforeTriggeringCircuitBreaker
91+
transport.TimeToWaitBeforeTriggeringCircuitBreaker = TimeSpan.FromMinutes(2);
92+
#endregion
93+
94+
#region azure-service-bus-RetryPolicyOptions
95+
var azureAsbRetryOptions = new Azure.Messaging.ServiceBus.ServiceBusRetryOptions
96+
{
97+
Mode = Azure.Messaging.ServiceBus.ServiceBusRetryMode.Exponential,
98+
MaxRetries = 5,
99+
Delay = TimeSpan.FromSeconds(0.8),
100+
MaxDelay = TimeSpan.FromSeconds(15)
101+
};
102+
transport.RetryPolicyOptions = azureAsbRetryOptions;
103+
#endregion
104+
105+
#region azure-service-bus-entitymaximumsize
106+
transport.EntityMaximumSize = 5;
107+
#endregion
108+
109+
#region azure-service-bus-enablepartitioning
110+
transport.EnablePartitioning = true;
111+
#endregion
112+
113+
#region azure-service-bus-subscriptionnameconvention
114+
string HashSubName(string input)
115+
{
116+
var inputBytes = Encoding.Default.GetBytes(input);
117+
// use MD5 hash to get a 16-byte hash of the string
118+
using (var provider = new MD5CryptoServiceProvider())
119+
{
120+
var hashBytes = provider.ComputeHash(inputBytes);
121+
return new Guid(hashBytes).ToString();
122+
}
123+
}
124+
125+
const int MaxEntityNameLength = 50;
126+
127+
transport.SubscriptionNamingConvention = n => n.Length > MaxEntityNameLength ? HashSubName(n) : n;
128+
#endregion
129+
130+
#region azure-service-bus-subscriptionrulenameconvention
131+
string HashRuleSubName(string input)
132+
{
133+
var inputBytes = Encoding.Default.GetBytes(input);
134+
// use MD5 hash to get a 16-byte hash of the string
135+
using (var provider = new MD5CryptoServiceProvider())
136+
{
137+
var hashBytes = provider.ComputeHash(inputBytes);
138+
return new Guid(hashBytes).ToString();
139+
}
140+
}
141+
142+
const int MaxSubRuleNameLength = 50;
143+
144+
transport.SubscriptionRuleNamingConvention = n => n.FullName.Length > MaxSubRuleNameLength ? HashRuleSubName(n.FullName) : n.FullName;
145+
#endregion
80146
}
81147
}

Snippets/ASBS/ASBS_4/Usage.cs

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
using System;
22
using System.Security.Cryptography;
33
using System.Text;
4-
54
using Azure.Identity;
6-
75
using NServiceBus;
6+
using Azure.Messaging.ServiceBus;
87

98
class Usage
109
{
@@ -77,5 +76,66 @@ string HashName(string input)
7776
transport.SubscriptionRuleNamingConvention = n => n.FullName.Length > MaxEntityName ? HashName(n.FullName) : n.FullName;
7877

7978
#endregion
79+
80+
#region azure-service-bus-usewebsockets
81+
transport.UseWebSockets = true;
82+
#endregion
83+
84+
#region azure-service-bus-websockets-proxy
85+
transport.WebProxy = new System.Net.WebProxy("http://myproxy:8080");
86+
#endregion
87+
88+
#region azure-service-bus-TimeToWaitBeforeTriggeringCircuitBreaker
89+
transport.TimeToWaitBeforeTriggeringCircuitBreaker = TimeSpan.FromMinutes(2);
90+
#endregion
91+
92+
#region azure-service-bus-RetryPolicyOptions
93+
var azureAsbRetryOptions = new Azure.Messaging.ServiceBus.ServiceBusRetryOptions
94+
{
95+
Mode = Azure.Messaging.ServiceBus.ServiceBusRetryMode.Exponential,
96+
MaxRetries = 5,
97+
Delay = TimeSpan.FromSeconds(0.8),
98+
MaxDelay = TimeSpan.FromSeconds(15)
99+
};
100+
transport.RetryPolicyOptions = azureAsbRetryOptions;
101+
#endregion
102+
103+
#region azure-service-bus-entitymaximumsize
104+
transport.EntityMaximumSize = 5;
105+
#endregion
106+
107+
#region azure-service-bus-enablepartitioning
108+
transport.EnablePartitioning = true;
109+
#endregion
110+
111+
#region azure-service-bus-subscriptionnameconvention
112+
string HashSubName(string input)
113+
{
114+
var inputBytes = Encoding.Default.GetBytes(input);
115+
// use MD5 hash to get a 16-byte hash of the string
116+
var hashBytes = MD5.HashData(inputBytes);
117+
118+
return new Guid(hashBytes).ToString();
119+
}
120+
121+
const int MaxEntityNameLength = 50;
122+
123+
transport.SubscriptionNamingConvention = n => n.Length > MaxEntityNameLength ? HashSubName(n) : n;
124+
#endregion
125+
126+
#region azure-service-bus-subscriptionrulenameconvention
127+
string HashRuleSubName(string input)
128+
{
129+
var inputBytes = Encoding.Default.GetBytes(input);
130+
// use MD5 hash to get a 16-byte hash of the string
131+
var hashBytes = MD5.HashData(inputBytes);
132+
133+
return new Guid(hashBytes).ToString();
134+
}
135+
136+
const int MaxSubRuleNameLength = 50;
137+
138+
transport.SubscriptionRuleNamingConvention = n => n.FullName.Length > MaxSubRuleNameLength ? HashRuleSubName(n.FullName) : n.FullName;
139+
#endregion
80140
}
81141
}

Snippets/ASBS/ASBS_5/Usage.cs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,38 @@ class Usage
107107
}
108108
};
109109
#endregion
110+
111+
#region azure-service-bus-usewebsockets
112+
transport.UseWebSockets = true;
113+
#endregion
114+
115+
#region azure-service-bus-websockets-proxy
116+
transport.WebProxy = new System.Net.WebProxy("http://myproxy:8080");
117+
#endregion
118+
119+
#region azure-service-bus-TimeToWaitBeforeTriggeringCircuitBreaker
120+
transport.TimeToWaitBeforeTriggeringCircuitBreaker = TimeSpan.FromMinutes(2);
121+
#endregion
122+
123+
#region azure-service-bus-RetryPolicyOptions
124+
var azureAsbRetryOptions = new Azure.Messaging.ServiceBus.ServiceBusRetryOptions
125+
{
126+
Mode = Azure.Messaging.ServiceBus.ServiceBusRetryMode.Exponential,
127+
MaxRetries = 5,
128+
Delay = TimeSpan.FromSeconds(0.8),
129+
MaxDelay = TimeSpan.FromSeconds(15)
130+
};
131+
transport.RetryPolicyOptions = azureAsbRetryOptions;
132+
#endregion
133+
134+
#region azure-service-bus-entitymaximumsize
135+
transport.EntityMaximumSize = 5;
136+
#endregion
137+
138+
#region azure-service-bus-enablepartitioning
139+
transport.EnablePartitioning = true;
140+
#endregion
141+
110142
}
111143

112144
class MyEvent;

0 commit comments

Comments
 (0)