forked from radius-project/recipes
-
Notifications
You must be signed in to change notification settings - Fork 0
/
extender-servicebus.bicep
113 lines (94 loc) · 3.48 KB
/
extender-servicebus.bicep
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/*
Copyright 2023 The Radius Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
@description('Radius-provided object containing information about the resouce calling the Recipe')
param context object
@description('The geo-location where the resource lives.')
param location string = resourceGroup().location
@description('The name of the Service Bus Topic to create')
param topicName string
@description('The list of subscriptions to create')
param subscriptions array = []
// Service Bus configuration
// https://learn.microsoft.com/en-us/azure/templates/microsoft.servicebus/namespaces?pivots=deployment-language-bicep
@description('The SKU of the Service Bus Namespace. Valid values: (Basic, Standard, Premium)')
@allowed([
'Basic'
'Standard'
'Premium'
])
param skuName string = 'Standard'
@description('The tier of the Service Bus Namespace. Valid values: (Basic, Standard, Premium)')
@allowed([
'Basic'
'Standard'
'Premium'
])
param skuTier string = 'Standard'
@description('ISO 8601 Default message timespan to live value. This is the duration after which the message expires, starting from when the message is sent to Service Bus. This is the default value used when TimeToLive is not set on a message itself.')
param defaultMessageTimeToLive string = 'P14D'
@description('The user-defined tags that will be applied to the resource. Default is null')
param tags object = {}
@description('The Radius specific tags that will be applied to the resource')
var radiusTags = {
'radapp.io-environment': context.environment.id
'radapp.io-application': context.application == null ? '' : context.application.id
'radapp.io-resource': context.resource.id
}
resource servicebus 'Microsoft.ServiceBus/namespaces@2021-06-01-preview' = {
name: 'servicebus-namespace-${uniqueString(context.resource.id, resourceGroup().id)}'
location: location
tags: union(radiusTags, tags)
sku: {
name: skuName
tier: skuTier
}
resource topic 'topics' = {
name: topicName
properties: {
defaultMessageTimeToLive: defaultMessageTimeToLive
maxSizeInMegabytes: 1024
requiresDuplicateDetection: false
enableBatchedOperations: true
supportOrdering: false
enablePartitioning: true
enableExpress: false
}
resource rootRule 'authorizationRules' = {
name: 'Root'
properties: {
rights: [
'Manage'
'Send'
'Listen'
]
}
}
resource createSubscriptions 'subscriptions' = [for subscriptionName in subscriptions: {
name: subscriptionName
properties: {
requiresSession: false
defaultMessageTimeToLive: defaultMessageTimeToLive
deadLetteringOnMessageExpiration: true
deadLetteringOnFilterEvaluationExceptions: true
maxDeliveryCount: 10
enableBatchedOperations: true
}
}]
}
}
output result object = {
secrets: {
#disable-next-line outputs-should-not-contain-secrets
connectionString: servicebus::topic::rootRule.listKeys().primaryConnectionString
}
}