Skip to main content
Version: 3.0 (next)

Azure Service Bus Nodes

Azure Service Bus is Microsoft's managed message broker for reliable delivery between enterprise systems. MaestroHub's Service Bus nodes send messages to queues and topics, take or read messages from queues and subscriptions, and list a namespace's entities, as steps in a running pipeline.

Configuration Quick Reference​

FieldWhat you chooseDetails
ParametersConnection, Function, Function Parameters, Timeout OverrideSelect the connection profile, function, configure function parameters with expression support, and optionally override timeout.
SettingsDescription, Timeout (seconds), Retry on Timeout, Retry on Fail, On ErrorNode description, maximum execution time, retry behavior on timeout or failure, and error handling strategy. All execution settings default to pipeline-level values.
Azure Service Bus Send node

Service Bus Send Node

Azure Service Bus Connector Nodes​

Service Bus connector nodes run a function you defined on a Service Bus connection as a step in an already-running pipeline.

Supported Function Types:

Function NamePurposeCommon Use Cases
Send MessageSend one message to a queue or topic, now or scheduledHand work orders to ERP, publish line events, schedule reminders
Send BatchSend an array of messages in as few batches as the size limit allowsForward collected readings, fan out work items
Receive MessagesTake up to N messages from a queue or subscription, removing themDrain a queue on a schedule, clear a dead-letter queue
Peek MessagesRead messages without locking or removing themInspect a dead-letter queue, check a producer
List EntitiesList the namespace's queues, topics and subscriptionsFind entity names, check which require sessions

How It Works​

When the pipeline executes, a Send node:

  1. Uses the selected connection's AMQP link to the namespace
  2. Resolves the function's ((parameters)) from the node's inputs
  3. Sends the message (or schedules it) to the queue or topic
  4. Returns what Service Bus confirmed: the message ID, and for a scheduled message its sequence number

A Receive node locks messages, returns them, and completes them. If the node fails or is cancelled after locking, the messages are abandoned and delivered again, so a receive never loses a message the pipeline did not get.

Configuration​

FieldWhat you chooseDetails
ConnectionAzure Service Bus connection profileSelect a pre-configured Service Bus connection from your connection library
FunctionSend Message / Send Batch / Receive Messages / Peek Messages / List Entities functionChoose the function that defines the operation and its parameters
Function ParametersMessage valuesDynamic values for the queue, payload, message ID, session ID and properties, from expressions or constants

For every field of each function, see the Azure Service Bus Functions documentation.

Looking for event-driven pipeline triggers?

To start a pipeline whenever a message arrives on a queue or subscription, use the Azure Service Bus Trigger Node instead.

Output​

Every Service Bus node delivers its data under result, and execution facts (success, functionId, durationMs, timestamp) under _metadata:

NodeExpressionDescription
Send Message$node["Name"].result.entity, $node["Name"].result.messageId, $node["Name"].result.messageSizeThe queue or topic, the message ID (the one set, or one generated for the send), and the payload size in bytes
$node["Name"].result.scheduledWhether the message was scheduled rather than sent now
$node["Name"].result.sequenceNumber, $node["Name"].result.scheduledEnqueueTimeOnly for a scheduled message: the sequence number Service Bus gave it and when it becomes visible, RFC 3339 UTC
Send Batch$node["Name"].result.sent, $node["Name"].result.batchesHow many messages were sent, and in how many batches the size limit split them
Receive / Peek$node["Name"].result.count, $node["Name"].result.messagesHow many messages, and one object per message: payload, messageId, sequenceNumber, enqueuedTime, deliveryCount always; contentType, subject, correlationId, sessionId, partitionKey, replyTo, to, scheduledEnqueueTime, applicationProperties when the sender set them; deadLetterReason, deadLetterErrorDescription, deadLetterSource on a dead-lettered message. Numbers arrive as text, as the trigger carries them
$node["Name"].result.subQueuenone, deadLetter or transferDeadLetter
$node["Name"].result.subscription, $node["Name"].result.sessionIdThe subscription or session read, when there was one
Receive$node["Name"].result.notCompletedPresent only when a message's lock was lost before it could be completed: that many of the returned messages will be delivered again
Peek$node["Name"].result.peekedAlways true: the messages were read without being locked or removed
List Entities$node["Name"].result.queues, $node["Name"].result.topicsOne object per queue (name, requiresSession, status, maxDeliveryCount, lockDuration) and per topic (name, status, subscriptions shaped like queues)
$node["Name"].result.queueCount, $node["Name"].result.topicCount, $node["Name"].result.truncatedHow many were listed, and whether Max Items stopped the listing early

An empty queue is not an error: Receive and Peek return count 0 and an empty messages array.