AZURE SERVICE BUS → STACKIT RABBITMQ
Azure Service Bus naar STACKIT RabbitMQ
Service Bus gaat als replatforming naar STACKIT RabbitMQ: één RabbitMQ-instance bevat de queues en exchanges, en clients stappen over van de Service Bus SDK naar een AMQP 0-9-1-client. StackToIT schrijft de instance, somt elke instelling van queues en topics op die niet wordt overgenomen en noemt de Service Bus-functies die RabbitMQ anders afhandelt.
De stappen in volgorde
1. Entiteiten en functies inventariseren
Maak een lijst van namespaces, queues, topics, subscriptions en hun regels. Noteer per entiteit sessies, duplicate detection, dead-lettering, levensduur van berichten en leveringslimieten. Deze instellingen bepalen hoeveel code verandert.
2. De Terraform beoordelen
Het assessment maakt van elke namespace, met de bijbehorende queues en topics, één eenheid en laat zien wat het concept overneemt en wat niet.
3. De RabbitMQ-instance aanmaken
Stel het project, het plan, de versie en de clients in die mogen verbinden. De toegangslijst vervangt het standaardbereik, dus u somt uw clients zelf op.
4. De topologie opzetten
Configureer queues, exchanges en bindings in de instance, vanuit de applicatie of vanuit deploymentscripts (praktijk). Het concept maakt alleen de instance aan en noemt elke instelling van queues en topics als niet overgenomen.
5. De clients omschakelen
Producers en consumers gaan werken met een AMQP 0-9-1-clientbibliotheek, een nieuwe host, een TLS-instelling en de inloggegevens van de instance.
6. Leegmaken en overschakelen
Laat consumers de Azure-queues leegmaken, richt producers op RabbitMQ en houd de namespace aan tot het laatste bericht is verwerkt. Dit is een werkwijze uit de praktijk, geen stap die de run voor u plant.
Een namespace met queues en een topic, omgezet
Een kleine omgeving die voor deze pagina is opgesteld en op 4 november 2026 door StackToIT is beoordeeld. Links: de Azure-invoer. Rechts: het resourceblok van de STACKIT-Terraform die de engine schreef; de beoordelingsopmerkingen erboven in het bestand zijn hier weggelaten.
resource "azurerm_servicebus_namespace" "orders" {
name = "sb-orders-gwc"
location = azurerm_resource_group.msg.location
resource_group_name = azurerm_resource_group.msg.name
sku = "Premium"
capacity = 1
premium_messaging_partitions = 1
}
resource "azurerm_servicebus_queue" "invoices" {
name = "invoices"
namespace_id = azurerm_servicebus_namespace.orders.id
max_delivery_count = 5
lock_duration = "PT1M"
requires_duplicate_detection = true
dead_lettering_on_message_expiration = true
default_message_ttl = "P7D"
}
resource "azurerm_servicebus_queue" "sessions" {
name = "fulfilment-sessions"
namespace_id = azurerm_servicebus_namespace.orders.id
requires_session = true
max_delivery_count = 10
}
resource "azurerm_servicebus_topic" "events" {
name = "order-events"
namespace_id = azurerm_servicebus_namespace.orders.id
default_message_ttl = "P1D"
}resource "stackit_rabbitmq_instance" "messaging" {
project_id = var.project_id
name = "messaging"
plan_name = var.rabbitmq_plan_name
version = var.rabbitmq_version
parameters = {
sgw_acl = join(",", var.rabbitmq_allowed_cidrs)
}
}Eén instance voor de hele namespace
De queues en het topic worden geen Terraform-resources. De namespace wordt één stackit_rabbitmq_instance; sku = Premium, capacity en de messagingpartities staan als niet overgenomen vermeld, en de plannaam en de versie zijn variabelen zonder standaardwaarde.
De toegangslijst heeft geen standaardwaarde
De variabele voor de toegestane CIDR's weigert een lege lijst, omdat het standaardbereik van STACKIT de adressen van alle STACKIT-klanten toelaat, zoals de engine aangeeft.
De versie vraagt om controle
De variabeletekst legt vast dat de servicecatalogus en de lifecyclepagina van STACKIT het niet eens zijn over de aangeboden RabbitMQ-versie, dus is er geen standaardwaarde ingesteld. Bevestig de versie voor uw regio voordat u apply uitvoert. Vanaf november 2026 vermeldt de lifecyclepagina 4.0 (uitgebracht in april 2025, einde van de ondersteuning nog aan te kondigen), 3.13 (einde van de ondersteuning in september 2025) en 3.10 (einde van de ondersteuning in maart 2025). Geen van de STACKIT RabbitMQ-pagina's die voor deze gids zijn geraadpleegd, noemt de protocollen die een instance accepteert; test uw AMQP 0-9-1- of AMQP 1.0-client dus tegen een echte instance.
Wat het concept niet overneemt
De regels die de engine boven de instance schreef voor de namespace, de twee queues en het topic, gevolgd door de twee functiewaarschuwingen, zoals het bestand ze bevat.
# NOT CARRIED (azurerm_servicebus_namespace.orders): capacity = 1, name = sb-orders-gwc, premium_messaging_partitions = 1, sku = Premium — configure its queues and topics as queues and exchanges in the RabbitMQ instance; none of the namespace's settings is generated.
# NOT CARRIED (azurerm_servicebus_queue.invoices): dead_lettering_on_message_expiration = true, default_message_ttl = P7D, lock_duration = PT1M, max_delivery_count = 5, name = invoices, namespace_id, requires_duplicate_detection = true — a setting of azurerm_servicebus_namespace.orders: configure its queues and topics as queues and exchanges in the RabbitMQ instance; none of the namespace's settings is generated.
# NOT CARRIED (azurerm_servicebus_queue.sessions): max_delivery_count = 10, name = fulfilment-sessions, namespace_id, requires_session = true — a setting of azurerm_servicebus_namespace.orders: configure its queues and topics as queues and exchanges in the RabbitMQ instance; none of the namespace's settings is generated.
# NOT CARRIED (azurerm_servicebus_topic.events): default_message_ttl = P1D, name = order-events, namespace_id — a setting of azurerm_servicebus_namespace.orders: configure its queues and topics as queues and exchanges in the RabbitMQ instance; none of the namespace's settings is generated.
# azurerm_servicebus_namespace.orders: WARNING sb-sessions: Queues use sessions (ordered, grouped processing); RabbitMQ has no session concept, so ordering per key needs consistent-hash exchanges or single-active consumers.
# azurerm_servicebus_namespace.orders: WARNING sb-duplicate-detection: Duplicate detection is enabled; RabbitMQ has no built-in deduplication, so consumers must be idempotent.Service Bus-functies en hun RabbitMQ-antwoord
Overgenomen uit de run en de redenen daarvan. De rechterkolom noemt wat nog te beslissen is; het beslissingsregister wijst de openstaande instellingen toe aan de Identity Architect, de Network Architect en de Platform Architect.
| Service Bus-functie | RabbitMQ-aanpak | Beslissing |
|---|---|---|
| Queue | Een RabbitMQ-queue die u in de instance configureert | Queuenamen en argumenten |
| Topic met subscriptions | Een exchange met voor elke abonnee een gebonden queue | Exchangetype en bindings |
| Dead-lettering | Een dead-letter exchange, ingesteld als queueargument | Welke queues er een nodig hebben |
| Levensduur van berichten, leveringslimiet | Queueargumenten; voor de lockduur bestaat geen equivalent, het dichtstbijzijnde is de parameter consumer_timeout | De beperking accepteren of in de consumer bouwen |
| Sessies | Geen sessieconcept: consistent-hash exchanges of single-active consumers | Ontwerp voor volgorde per key |
| Duplicate detection | Geen ingebouwde deduplicatie: consumers moeten idempotent zijn | Idempotentie in de consumers |
| Filterregel van een subscription | Niet beoordeeld door deze build; een architect bepaalt het doel | Bindingkeys, headers of een filter aan de kant van de consumer |
| Niveau van de namespace | Een RabbitMQ-plan; een beslissing over de dimensionering | Plangrootte, versie, toegangslijst |
De sessiesqueue en de instelling voor duplicate detection in de voorbeeldinvoer leveren de twee waarschuwingen hierboven op; de run laat elk van deze instellingen open voor een medewerker.
Een resource die deze build niet beoordeelt
Een subscriptionregel heeft geen vermelding in de assessmentcatalogus van deze build. De run legt die vast als handmatige eenheid met zekerheidsniveau LOW en schrijft er niets voor. Links: de invoer. Rechts: de assessmentvelden zoals de run ze schreef.
resource "azurerm_servicebus_subscription_rule" "shipping_only" {
name = "eu-only"
subscription_id = azurerm_servicebus_subscription.shipping.id
filter_type = "SqlFilter"
sql_filter = "region = 'EU'"
}{
"id": "azurerm_servicebus_subscription_rule.shipping_only",
"result": {
"class": "MANUAL_REVIEW",
"confidence": "LOW",
"reason": "azurerm_servicebus_subscription_rule is not in the knowledge base catalogue; an architect has to decide the target. Nothing of this resource is assessed or drafted (unknown source type).",
"coverage": "UNKNOWN_SOURCE_TYPE"
}
}Er is nog een eigenaar nodig
Het bestand met handmatige stappen noemt de regel onder stappen zonder eigenaarsrol, omdat het assessment de eenheid geen categorie geeft. Wijs er zelf een toe.
Lees het filter, niet alleen de naam
Het SQL-filter bepaalt welke berichten een subscription ontvangt. Op RabbitMQ verhuist die logica naar bindings of naar de consumer.
Beslissingen die de architect neemt
Plan, versie en toegangslijst
De run vraagt om een RabbitMQ-plan, een versie en de CIDR's van de clients. Geen ervan heeft een standaardwaarde.
Volgorde en duplicaten
Als een queue sessies of duplicate detection vereist, verandert het applicatieontwerp. Beslis dat voordat het eerste bericht verhuist.
Berichten onderweg
Het bestand voor dataverplaatsing van deze run is als niet van toepassing gemarkeerd: de bron bevat geen database, cache of objectopslag en een queue- of topicdienst wordt niet als stateful gelezen. Berichten onderweg maakt u zelf leeg.
Back-ups en herstel
STACKIT documenteert automatische back-ups van de RabbitMQ-dienst: elke 4 uur een volledige back-up, 14 dagen bewaard. Controleer of dat past bij uw herstelbehoeften.
Plugins die u mogelijk nodig hebt
De documentatie noemt plugins die u via het parameterbestand kunt inschakelen, waaronder consistent hash exchange, shovel en federation.
Vragen over deze migratie
Kan dezelfde clientbibliotheek met beide brokers verbinden?
Niet met de Service Bus SDK zoals die nu is. Microsoft noemt AMQP 1.0 het primaire protocol van Service Bus en meldt dat u daarmee applicaties kunt schrijven die werken met Service Bus en met brokers zoals RabbitMQ. De run plant een overstap naar een AMQP 0-9-1-client. Welke route werkt, hangt af van de RabbitMQ-versie die in uw regio wordt aangeboden en van de Service Bus-functies die uw code gebruikt; test dit dus tegen de instance.
Maakt StackToIT de queues en exchanges aan?
Nee. Het concept maakt één RabbitMQ-instance aan. U configureert daarin zelf queues en exchanges, en elke queuenaam en instelling verschijnt als aantekening dat die niet is overgenomen.
Hoe vervang ik sessies?
RabbitMQ kent geen sessieconcept. De run verwijst naar consistent-hash exchanges of single-active consumers voor volgorde per key, en beide vergen een ontwerpbeslissing.
Wat gebeurt er met de berichten die nog in de queues staan?
De tool verplaatst geen data. Maak de Azure-queues leeg met de bestaande consumers, of publiceer bewust opnieuw, en houd de namespace aan tot het laatste bericht is verwerkt.
Bronnen
Uw volgende stap: STACKIT.
Vertel ons over uw omgeving, dan laten wij zien wat StackToIT daarvoor oplevert: doelarchitectuur, Terraform-artefacten en een gestructureerd migratieplan.
Laat uw gegevens achter, onze specialisten nemen contact met u op.
Liever zelf een e-mail sturen? connect@stacktoit.com
Hartelijk dank.
Uw verzoek is bij ons binnengekomen. Onze specialisten nemen contact met u op.