- Notifications
You must be signed in to change notification settings - Fork0
Utility to manage messages on an Azure Service Bus Queue or Topic
License
mmckechney/ServiceBusUtility
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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
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 futuresbu 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, use
sbu -h
Build the solution
From a PowerShell command, run the
setup.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 of
Azure 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
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----
To experiment with different Service Bus message handling, you can leverage theread
command
Now, try send a message to the Service Bus via:
sbu queue send --queue-name demoqueue --count 1
sbu queueread --queue-name demoqueue --messagehandling Abandon
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
sbu queue read --queue-name demoqueue --messagehandling LockExpire
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