Reference

ZMQ.TimeoutError — Type

Exception thrown by the recv*() methods if rcvtimeo is set and a receive times out. The timeout itself can be obtained from the timeout_secs property of the exception.

source

Sockets

The ZMQ Socket type:

ZMQ.Socket — Method
Socket(ctx::Context, typ::Integer)

Create a socket in a given context.

source
ZMQ.Socket — Method
Socket(typ::Integer)

Create a socket of a certain type.

source

Socket implements the Sockets interface:

Base.bind — Function
Sockets.bind(socket::Socket, endpoint::AbstractString)

Bind the socket to an endpoint. Note that the endpoint must be formatted as described here. e.g. tcp://127.0.0.1:42000.

source
Sockets.connect — Function
Sockets.connect(socket::Socket, endpoint::AbstractString)

Connect the socket to an endpoint.

source
Sockets.recv — Function
recv(socket::Socket)

Return a Message object representing a message received from a ZMQ Socket (without making a copy of the message data).

If rcvtimeo is set then a TimeoutError will be thrown upon timeout. Note that because of the integration with Julia's event loop there is some overhead to using timeouts, on the order of ~10μs. All other recv*() methods also respect rcvtimeo.

source
recv(socket::Socket, ::Type{T})

Receive a message of type T (typically a String, Vector{UInt8}, or isbits type) from a ZMQ Socket. (Makes a copy of the message data; you can alternatively use recv(socket) to work with zero-copy bytearray-like representation for large messages.)

source
Sockets.send — Function
send(socket::Socket, data; more=false)

Send data over socket. A more=true keyword argument can be passed to indicate that data is a portion of a larger multipart message. data can be any isbits type, a Vector of isbits elements, a String, or a Message object to perform zero-copy sends of large arrays.

source
send(socket::Socket, zmsg::Message; more::Bool=false)

Zero-copy version of Sockets.send(socket, data) using a user-allocated Message.

source
ZMQ.send_multipart — Function
send_multipart(socket::Socket, parts)

Send a multipart message composed of the elements in parts. parts may be any object that supports getindex(), eachindex(), and lastindex().

source

ZMQ socket types (note: some of these are aliases; e.g. XREQ = DEALER):

Messages

ZMQ.Message — Type
mutable struct Message <: AbstractArray{UInt8, 1}

High-level Message object for sending/receiving ZMQ messages in shared buffers. As an AbstractArray, it supports common (non-resizeable) array behaviour.

Examples

julia> using ZMQ

julia> m = Message("foo");

julia> Char(m[1])            # Array indexing
'f': ASCII/Unicode U+0066 (category Ll: Letter, lowercase)

julia> m[end] = Int('g');    # Array assignment

julia> unsafe_string(m)      # Conversion to string (only do this if you know the message is a string)
"fog"

julia> IOBuffer(m)           # Create a zero-copy IOBuffer
IOBuffer(data=UInt8[...], readable=true, writable=false, seekable=true, append=false, size=3, maxsize=Inf, ptr=1, mark=-1)
source
ZMQ.Message — Method
Message(len::Integer)

Create a message with a given buffer size (for send).

source
ZMQ.Message — Method
Message(origin::Any, m::Ptr{T}, len::Integer) where {T}

Low-level function to create a message (for send) with an existing data buffer, without making a copy. The origin parameter should be the Julia object that is the origin of the data, so that we can hold a reference to it until ZMQ is done with the buffer.

source
ZMQ.Message — Method
Message(m::String)

Create a message with a string as a buffer (for send). Note: the Message now "owns" the string, it must not be resized, or even written to after the message is sent.

source
ZMQ.Message — Method
Message(p::SubString{String})

Create a message with a sub-string as a buffer (for send). Note: the same ownership semantics as for Message(m::String) apply.

source
ZMQ.Message — Method
Message(a::T) where T <: DenseVector

Create a message with an array as a buffer (for send). Note: the same ownership semantics as for Message(m::String) apply.

Usually a will be a 1D Array/Vector, but on Julia 1.11+ it can also be a Memory.

source
ZMQ.isfreed — Method
isfreed(m::Message)

Check whether zeromq has called our free-function, i.e. whether we are safe to reclaim ownership of any buffer object the Message was created with.

source

Context

ZMQ.context — Function
context()

Return the default ZMQ context (of type Context), initializing it if this has not been done already. (This context is automatically closed when Julia exits.)

source