Skip to content
A Go interface to ZeroMQ version 4
Go C
Branch: master
Clone or download

Latest commit

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
draft possible fix for wrong error values on Windows -- serious bug fix in … May 29, 2020
examples small adjustment in examples/lpserver.go May 7, 2020
examples_security
LICENSE.txt License year update Dec 5, 2018
README.md README Go 1.14 fix Feb 28, 2020
auth.go possible fix for wrong error values on Windows May 29, 2020
auth_test.go New function for ZeroMQ 4.2: AuthCurvePublic Nov 7, 2016
ctxoptions_unix.go Context options newly documented for ZeroMQ 4.1.3 are already availab… Sep 18, 2015
ctxoptions_windows.go Context options newly documented for ZeroMQ 4.1.3 are already availab… Sep 18, 2015
doc.go RetryAfterEINTR is initially true Mar 1, 2020
dummy.c Added file dummy.c for a build time error message if cgo is disabled Oct 7, 2015
errors.go NEW: GetRetryAfterEINTR, SetRetryAfterEINTR Feb 28, 2020
polling.go possible fix for wrong error values on Windows May 29, 2020
reactor.go NEW: GetRetryAfterEINTR, SetRetryAfterEINTR Feb 28, 2020
socketevent_test.go RetryAfterEINTR is initially true Mar 1, 2020
socketget.go possible fix for wrong error values on Windows May 29, 2020
socketget_unix.go Update to ZeroMQ release version 4.1.1 Jun 2, 2015
socketget_windows.go possible fix for wrong error values on Windows May 29, 2020
socketset.go possible fix for wrong error values on Windows May 29, 2020
utils.go faster SendMessage() and SendMessageDontwait() Jan 21, 2016
wrappers_unix.go possible fix for wrong error values on Windows -- for older versions … May 29, 2020
wrappers_windows.go
zmq4.go possible fix for wrong error values on Windows May 29, 2020
zmq4.h possible fix for wrong error values on Windows May 29, 2020
zmq41_test.go RetryAfterEINTR is initially true Mar 1, 2020
zmq4_test.go RetryAfterEINTR is initially true Mar 1, 2020

README.md

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.


Go Report Card GoDoc

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

  • Mangos — An implementation in pure Go of the SP ("Scalable Protocols") protocols
  • go-nanomsg — Language bindings for nanomsg in Go
  • goczmq — A Go interface to CZMQ

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.

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".

You can’t perform that action at this time.