It's important to know why you are using a queue or a topic in an application.
Microsoft probably has the best message queues out there. Here's a little description of why they suggest you use them.
Microsoft Message Queuing (MSMQ) technology enables applications running at different times to communicate across heterogeneous networks and systems that may be temporarily offline. MSMQ provides guaranteed message delivery, efficient routing, security, and priority-based messaging. It can be used to implement solutions for both asynchronous and synchronous messaging scenarios.
So, if an assignment has those types of requirements, where you're communicating across heterogeneious networks and systems that might be temporarily offline, well, then message queues are an ideal resource.
Queues are also great for delayed, yet transactionally reliable, messaging. IMHO, many architectures could benefit from having a queue, and delaying transactional processing until more clock cycles are available.
The Service Activator uses JMS as an example. There is a great class diagram, along with a sequence diagram that shows you the pattern. That might be enough to get you kick started if you're confident that a message queue that delays processing and connects heterogeneous environments is the right solution for your problem domain. SuD