You signed in with another tab or window.Reload to refresh your session.You signed out in another tab or window.Reload to refresh your session.You switched accounts on another tab or window.Reload to refresh your session.Dismiss alert
This command line tool and source code can be used both as a utility to manage messages on an Azure Service Bus Queue or Topic as well as a learning tool to understand the Azure.Messaging.ServiceBus SDKs
What's included
Utility and sample code for accessing using Azure Service Bus
ServiceBusUtility - A command line tool to send messages to and read messages from an Azure Service Bus Queue or Topic/Subscription. Example commands:
sbu topic send --topic-name <name> --sub <name> --count <int> --delay 300 : Sends the specified number of messages to the service bus topic, scheduling the message for a specified number of seconds in the future
sbu queue read --queue-name <name> --messagehandling <Abandon|Complete|DeadLetter|None|Reschedule> : Reads messages from the Service Bus, with the specified handling of the message.
To see the full list of command line options, usesbu -h
Setup
Build the solution
From a PowerShell command, run thesetup.ps1 script. This will create the Service Bus Namespace, and a queue, topic and subscription for you to test against.
Connect-AzAccount./SetUp.ps1-resourceGroupName<resource group name>-location<Azure region>-namespaceName<unique name>
Either assign your Azure AAD account the RBAC roles ofAzure Service Bus Data Receiver andAzure Service Bus Data Sender and/or use thesbu connection set -c command with the connection string displayed from thesetup.ps1 command
Running
After running the setup (above), you can send messages to the Service Bus by navigating to the output directory of the utility project\ServiceBusUtility\ServiceBusUtility\bin\Debug\net7.0
From here, try running the send command
sbu queue send -q demoqueue --count 10Starting with args: send -c 10Loop 001: Sent message'1812e4a2-bd6e-4f6e-97f2-64523ff2ded5' to queue'demoqueue'Loop 002: Sent message'4596609c-8b47-4685-84ed-5e1dbf4522a9' to queue'demoqueue'Loop 003: Sent message'9fd59a8c-a7a4-46cc-a9d9-03c44ebfc61b' to queue'demoqueue'Loop 004: Sent message'5cfd2824-56bd-412b-b056-de524883ddfb' to queue'demoqueue'Loop 005: Sent message'd14fee7c-3c88-4602-baad-9ff9b3f1adbe' to queue'demoqueue'Loop 006: Sent message'325c948f-ecba-4637-8af5-1351fb4d2fa4' to queue'demoqueue'Loop 007: Sent message'9daf0c44-bb3c-4ea2-be91-79180f90b22d' to queue'demoqueue'Loop 008: Sent message'e8d4a14c-5898-494a-87f2-7361d9783996' to queue'demoqueue'Loop 009: Sent message'5b17e9d0-cc66-439b-8267-b09d0a531e3b' to queue'demoqueue'Loop 010: Sent message'71b8d368-5ab7-4612-a317-37d8e0d5c414' to queue'demoqueue'
Next, try receiving messages by running aread command. This will open a received that will retrieve message until you hit the <Enter> key
sbu queue read -q demoqueue Using saved connection string to connect to service bus...Starting message read for queue 'demoqueue'Press <Enter> so stop reading and exit...----------Sequence Number: 11Message State: ActiveMessage body: This is a new test message for queue created at 7/8/2022 7:40:49 PMMessage id: 7f06f54c-a62b-484f-8c95-44fce2dfddb3ScheduledTime: 1/1/0001 12:00:00 AM +00:00EnqueuedTime: 7/8/2022 7:40:52 PM +00:00ExpiresAt:TimeToLive: 15372286728.091293DeliveryCount: 1Messages rec'd: 1Finishing message processing. Message handling set to Complete and removed from queue----------Sequence Number: 12Message State: ActiveMessage body: This is a new test message for queue created at 7/8/2022 7:40:51 PMMessage id: b1e5e330-b3cd-4b43-851a-ae197e797f45ScheduledTime: 1/1/0001 12:00:00 AM +00:00EnqueuedTime: 7/8/2022 7:40:52 PM +00:00ExpiresAt:TimeToLive: 15372286728.091293DeliveryCount: 1Messages rec'd: 2Finishing message processing. Message handling set to Complete and removed from queue----
Experimenting
To experiment with different Service Bus message handling, you can leverage theread command
Abandoned messages are put back into the queue with there delivery count incremented. Once the delivery count hits the limit set on the queue, it will be sent to the Dead Letter queue
Starting message read for queue 'demoqueue'Press <Enter> so stop reading and exit...----------Sequence Number: 31Message State: ActiveMessage body: This is a new test message for queue created at 7/8/2022 7:54:40 PMMessage id: f786138f-1228-4fe9-ac92-2309939b53b8ScheduledTime: 1/1/0001 12:00:00 AM +00:00EnqueuedTime: 7/8/2022 7:54:42 PM +00:00ExpiresAt:TimeToLive: 15372286728.091293DeliveryCount: 1Messages rec'd: 1Message handling set to Abandon. Stopping message processing, putting back into queue with Deliver Count +1----------Sequence Number: 31Message State: ActiveMessage body: This is a new test message for queue created at 7/8/2022 7:54:40 PMMessage id: f786138f-1228-4fe9-ac92-2309939b53b8ScheduledTime: 1/1/0001 12:00:00 AM +00:00EnqueuedTime: 7/8/2022 7:54:42 PM +00:00ExpiresAt:TimeToLive: 15372286728.091293DeliveryCount: 2Messages rec'd: 2Message handling set to Abandon. Stopping message processing, putting back into queue with Deliver Count +1
The default message lock time is an attribute that can be set on the queue. You can extend the default lock with your Queue client. You should notice that the actual lock time will likely be longer than the requested time (but it won't be shorter). Once the lock expires, the message will get requeued with its delivery count incremented by 1
----------Sequence Number: 32Message State: ActiveMessage body: This is a new test message for queue created at 7/8/2022 7:55:51 PMMessage id: 48db8404-dd0f-481b-b414-eefb4bc4c37fScheduledTime: 1/1/0001 12:00:00 AM +00:00EnqueuedTime: 7/8/2022 7:55:53 PM +00:00ExpiresAt:TimeToLive: 15372286728.091293DeliveryCount: 1Messages rec'd: 1----------Sequence Number: 32Message State: ActiveMessage body: This is a new test message for queue created at 7/8/2022 7:55:51 PMMessage id: 48db8404-dd0f-481b-b414-eefb4bc4c37fScheduledTime: 1/1/0001 12:00:00 AM +00:00EnqueuedTime: 7/8/2022 7:55:53 PM +00:00ExpiresAt:TimeToLive: 15372286728.091293DeliveryCount: 2Messages rec'd: 2
About
Utility to manage messages on an Azure Service Bus Queue or Topic