Ømq is an intelligent socket library for messaging that allows for highly flexible messaging patterns between applications. It is fast, fault tolerant, and language agnostic. Common patterns supported by Ømq include request-reply, publish-subscribe, and push-pull. Devices can be used to route messages and act as brokers or balancers to solve problems like load balancing. Ømq offers advantages over traditional solutions when advanced network interactions or high performance is required.
2. What is Ømq?
Intelligent socket library for messaging
Incredibly flexible, you can build your own patterns
Fast as hell
Fault tolerant
Language agnostic
3. What is not Ømq?
A message queue, it literally has zero message queues
A server you can connect to
Persistent
Out of the box solution (sorry to let you down)
4. Why use Ømq instead of X?
It’s a paradigm change, you can hardly compare it to “other
solutions”
When your system require more advanced network
interactions (or patterns)
You need cheap and easy parallel processing
You don’t want a single point of failure
You need exceptional speed
8. Patterns is all what Ømq is about
You can choose to use any of the patterns or combine them
all in a single application
Combining patterns help you build more advanced
distributed systems
14. The solution
Start more servers on different ports
Bind your clients to multiple servers using the same socket
Ømq will automatically load balance them for you
Drawback: You need to hardcode server addresses on each
client
19. Pub - Sub
Like a radio broadcast, if you tune in late you’ll miss part of
the show
If client crashes the it will also lose messages
It is possible to attach multiple filters to a connection
You can listen on multiple addresses at once
20. Pub -Sub
Ømq will buffer the messages in the subscriber if it is a “slow
listener”
It will drop messages if buffer gets too big
That is extremely cool
21. Client Worker Worker Worker
more steps
Worker
Fan Worker Sink
Worker
Push - Pull (Pipeline)
25. Push - Pull
One way only
PUSH is used for “fanning out” tasks
PULL is used for fan-in or sink processes
Workers can hop-in at any time
Only one worker gets the task at a time and they are load
balanced
26. Push - Pull
Ømq will buffer the messages if there are no peers to get
them
It will block at some point if buffering too much
That is also extremely cool
28. Devices or Brokers
Devices are programs that will route messages between two
nodes
Devices are usually small but they can also be trusted with
larger tasks, such as persisting messages
Used to solve hard problems but also introduce single points
of failure
32. Devices
Clients will connect to localhost:5559
Servers will connect to localhost:5560
Load balancing is done by Ømq
If dealer fails everything breaks :(
You can install failover dealers! :)
33. Devices
Allow you to create more complex topologies
Help you route requests to anonymous workers
Good place for handling/persisting/retrying messages extra
logic
Can be written in any language supported by Ømq!