zmq4
Go interface to ZeroMQ version 4. Also available for [version 3](https://github.com/pebbe/zmq3) and [version 2](https://github.com/pebbe/zmq2)
About zmq4
A Go interface to ZeroMQ version 4.
Warning
Starting with Go 1.14, on Unix-like systems, you will get a lot of interrupted signal calls. See the top of a package documentation for a fix.
This requires ZeroMQ version 4.0.1 or above. To use CURVE security in versions prior to 4.2, ZeroMQ must be installed with libsodium enabled.
Partial support for ZeroMQ 4.2 DRAFT is available in the alternate
version of zmq4 draft. The API pertaining to this is subject to
change. To use this:
import (
zmq "github.com/pebbe/zmq4/draft"
)
For ZeroMQ version 3, see: http://github.com/pebbe/zmq3
For ZeroMQ version 2, see: http://github.com/pebbe/zmq2
Including all examples of ØMQ - The Guide.
Keywords: zmq, zeromq, 0mq, networks, distributed computing, message passing, fanout, pubsub, pipeline, request-reply
See also
extension:
- zmq4chan — Go-native channel interface for ZeroMQ sockets
alternatives:
- go-zeromq/zmq4 — A pure-Go implementation of ØMQ (ZeroMQ), version 4
- goczmq — A Go interface to CZMQ
- Awesome Go: Messaging — Libraries that implement messaging systems
Requirements
zmq4 is just a wrapper for the ZeroMQ library. It doesn't include the
library itself. So you need to have ZeroMQ installed, including its
development files. On Linux and Darwin you can check this with ($ is
the command prompt):
$ pkg-config --modversion libzmq
4.3.1
The Go compiler must be able to compile C code. You can check this with:
$ go env CGO_ENABLED
1
You can't do cross-compilation. That would disable C.
Windows
Build with CGO_CFLAGS and CGO_LDFLAGS environment variables, for example:
$env:CGO_CFLAGS='-ID:/dev/vcpkg/installed/x64-windows/include'
$env:CGO_LDFLAGS='-LD:/dev/vcpkg/installed/x64-windows/lib -l:libzmq-mt-4_3_4.lib'
Deploy result program with
libzmq-mt-4_3_4.dll
Install
go get github.com/pebbe/zmq4
Docs
API change
There has been an API change in commit
0bc5ab465849847b0556295d9a2023295c4d169e of 2014-06-27, 10:17:55 UTC
in the functions AuthAllow and AuthDeny.
Old:
func AuthAllow(addresses ...string)
func AuthDeny(addresses ...string)
New:
func AuthAllow(domain string, addresses ...string)
func AuthDeny(domain string, addresses ...string)
If domain can be parsed as an IP address, it will be interpreted as
such, and it and all remaining addresses are added to all domains.
So this should still work as before:
zmq.AuthAllow("127.0.0.1", "123.123.123.123")
But this won't compile:
a := []string{"127.0.0.1", "123.123.123.123"}
zmq.AuthAllow(a...)
And needs to be rewritten as:
a := []string{"127.0.0.1", "123.123.123.123"}
zmq.AuthAllow("*", a...)
Furthermore, an address can now be a single IP address, as well as an IP address and mask in CIDR notation, e.g. "123.123.123.0/24".
Frequently Asked Questions
What is zmq4?
zmq4 is a Messaging library for the Go programming language. Go interface to ZeroMQ version 4. Also available for [version 3](https://github.com/pebbe/zmq3) and [version 2](https://github.com/pebbe/zmq2)
How do I install zmq4?
Install zmq4 with the Go module system using `go get pebbe/zmq4`. Check the repository for the current installation instructions.
What category does zmq4 belong to?
zmq4 is listed under Messaging, specifically Messaging.