Jump to content

User:Dustinturp/sandbox

From Wikipedia, the free encyclopedia

LavinMQ
Original author(s)CloudAMQP
Developer(s)CloudAMQP
Initial releaseMarch 2023; 2 years ago (2023-03)[1]
Stable release
2.1.0 / January 16, 2025; 4 months ago (2025-01-16)
Repositorygithub.com/cloudamqp/lavinmq
Written inCrystal
Operating systemCross-platform
TypeMessage broker
LicenseApache License 2.0
Websitelavinmq.com

LavinMQ is a message-broker developed to use the AMQP 0.9.1 protocol. The broker also supports the MQTT 3.1 protocol. Written in Crystal, LavinMQ was developed as a lightweight and high throughput broker. The project is released under the Apache License 2.0.

History

[edit]

The project was originated by 84codes lead by CEO Carl Hörberg, and version 1.0.0 released in March of 2023.[2] The first beta released in May of 2022.[3] The name Lavin, originates from the Swedish word for Avalanche. The broker’s creation is inspired by 10+ years of cloud hosting message brokers across multiple cloud platforms.

Architecture

[edit]

LavinMQ focuses on the AMQP 0.9.1 protocol. It is Built on the LLVM compiler and compiles down to a single binary. Clients that implement the 0.9.1 protocol can be used with LavinMQ.

All messages are written to disk. Queues are backed by a message store containing segment files that are 8MB by default. The mmap syscall is used for the message segments. To prevent unnecessary memory usage, the segment files are unmapped when not in use. When a file needs to be written or read, it is re-mapped using only the memory needed for the specific segment. Message are appended to the last segment with a timestamp, exchange, routing key, and message headers.

LavinMQ can run on a single node or multiple nodes greater than or equal to 3. A leader node is always present while changes are streamed to the other nodes in real time. When the leader is unavailable an election takes place. Clustering utilizes ETCD, using the Raft consensus algorithm for leader election and maintaining the In-Sync-Replica (ISR) set.

See also

[edit]

References

[edit]
  1. ^ CLoudAMQP. "LavinMQ Release". Retrieved 15 January 2025.{{cite web}}: CS1 maint: url-status (link)
  2. ^ Christina Dahlén (April 4, 2023). "v1.0.0 Release". Press release. Retrieved March 5, 2025.
  3. ^ "v1.0.0-beta.1 Release". Press release. May 19, 2022. Retrieved March 5, 2025.
[edit]