sysvmq is a C extension that wraps System V IPC Message Queues. It's similar
to the POSIX MQ Ruby wrapper.
Message queues are handy for interprocess communication where you want to be
able to take down either endpoint easily. For example, a pipe or socket requires
you to implement handover logic in both applications. The main disadvantage of
SysV message queues over POSIX MQs (on Linux) is that SysV doesn't expose a file
descriptor to do e.g.
select(2) on. The advantage of SysV is that it's
implemented on OS X, which POSIX MQs are not.
sysvmq doesn't rely on any third-party message broker. The message
queue is handled by the kernel. It's extremely stable and performant.
sysvm to your Gemfile.
Currently known to work on Linux and OS X for MRI >= 2.0.
# Create a message queue with a 1024 byte buffer. require 'sysvmq' mq = SysVMQ.new(0xDEADC0DE, 1024, SysVMQ::IPC_CREAT | 0666) mq.send "Hellø Wårld!" assert_equal 1, mq.stats[:count] assert_equal "Hellø Wårld!", mq.receive # Raise an exception instead of blocking until a message is available mq.receive(0, SysVMQ::IPC_NOWAIT) ensure # Delete queue mq.destroy
- Explain messages types
- Add named params for flags (e.g.
mq.receive(:front, blocking: false)) instead of ORing flags directly.
- Add all of