3. What are Message Queues
Publish/Subscribe Pattern
A broker that routes messages between multiple producers and consumers
RabbitMQ, ActiveMQ, Kafka, Azure Service Bus, Amazon SQS
Runs as an external service
Can be glue between services written in different languages
Can help consolidate work between a scaled architecture
4. What is a message
● Destination address
● Headers
○ Type
○ Correlation ID
○ Timestamp
○ expiration
○ Reply to address
○ Delay headers
● body
○ Binary
○ String
○ XML
○ JSON
10. Demo
You can easily start RabbitMQ in Docker with these commands:
docker pull rabbitmq:3-management
docker run --rm -d -it -p 15672:15672 -p 5672:5672 rabbitmq:3-management
Then access the administrator at http://localhost:15672
11. Customer Use Cases
Incoming lead system to create internal follow ups in a
separate system without polling for new leads in DB.
12. Customer Use Cases
Aggregate real time changes to customer sales made
across multiple systems running different versions of
ColdFusion and Lucee to push real time updates to
dashboards and fire related processes.
13. Customer Use Cases
Leverage STOMP Rabbit Plugin for websockets to push
real time message to sales team agents as soon as a new
lead came in. Used topic exchange to broadcast leads
only to applicable team members and enforced security
via auth API.
14. Customer Use Cases
Implemented real time chat between Twillio-powered SMS
messages and web based chat UI on site so sales teams
could communicate with clients. All messages were sent
and received via websockets powered by Rabbit and
STOMP plugin.
15. Customer Use Cases
Created delayed notification system to follow up with
clients after unread messages. Used delayed message
exchange to schedule followups based on business rules.
Eliminated all DB polling to check for needed followups.
16. Customer Use Cases
Created user-specific notification queues to push over
websockets. Each queue topic is locked down to specific
users and authentication is provided by CF-based API
using JWT (JSON Web Token) from browser to identify
browser connections.