erlangzmq
What is erlangzmq?
erlangzmq is a library written in Erlang. It implements the ZeroMQ Message Transport Protocol (ZMTP). erlangzmq supports ZMTP version 3.1.
Goal
The goal of erlangzmq application is to provide up-to-date native Erlang implementation of ZMTP.
Features
- Resource Property (NEW in 3.1!)
- Request-Reply pattern
- Publish-Subscribe pattern
- Pipeline Pattern
- Exclusive Pair Pattern
- Version Negotiation
- NULL Security Mechanism
- Error Handling
- Framing
- Socket-Type Property & Identity Property
- Backwards Interoperability with ZMTP 3.0
Not implemented
- CurveZMQ - security is not currently implemented. As a work-around, consider using a proxy running libzmq.
Install
You can install erlangzmq from Hex: https://hex.pm/packages/erlangzmq or by referencing a specific tag directly:
{deps,[
{erlangzmq, {git, "git@github.com:chovencorp/erlangzmq.git", {tag, "1.0.0"}}}
]}.
For more info on rebar3 dependencies see the rebar3 docs.
Usage
See examples. Otherwise use just like a regular Erlang/OTP application.
If you would like to use python tests to try language interop, you need to have pyzmq installed.
Build
$ rebar3 compile
Test
$ rebar3 eunit -c
The -c will allow you to see the test coverage by running the command below.
Coverage
$ rebar3 cover
Generate Docs
$ rebar3 edoc
Architecture
Architecture describes the system structure.
Contributing
See Contributing.
Copyright
Copyright Choven Corp. 2016. All Rights Reserved.
FAQ
Why another Erlang implementation?
Because the existing Erlang implementations and bindings are out of date.
Why a dual-license?
To keep the code up-to-date. Having a commercial license allows us to charge money for code. Erlang is not a very trendy language, so the number of contributors to the open source project like this is small. In order to keep it from dying, we think it makes sense to run it as a commercial project.
Can I use
erlangzmqfor free?Yes, as long as you abide by the terms of the AGPL license. In short, AGPL is a viral license, in that any code it touches has to be similarly licensed. So if you are working on an open-source project which has a compatible license, you can use
erlangzmq. For more information see the license terms.Why do I have to sign over my copyright when contributing?
Short answer: for us to make money. Long answer: without your copyright, we could not dual-license the code, see "Why a dual-license?" above.
License
erlangzmq is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
erlangzmq is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with erlangzmq. If not, see http://www.gnu.org/licenses/
Commercial License
If you or your company would like to use erlangzmq without the restrictions of AGPL, consider purchasing a commercial license.
- The price for a commercial license is $99 USD.
- If you are incorporated simply purchase four copies of the license.
Contact us by email at contact@choven.ca for your copy of a commercial license.
Acknowledgements
Our thanks to Wilson Júnior Wpjunior for the great work he did on the initial version of the codebase.