R package for ZMQ
C++ R
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
R use platform-specific endian encoding Nov 1, 2015
inst
man
src Add support for Windows Jan 4, 2017
tests Added unit tests for poll.socket. Aug 4, 2012
tools
.Rbuildignore Add CI for Windows Jan 4, 2017
.gitignore
.gitmodules
.travis.yml Use pkg-config on unix systems Jan 3, 2017
DESCRIPTION
NAMESPACE add disconnect.socket May 11, 2015
README.md update readme and configure comments Jan 4, 2017
appveyor.yml
cleanup
configure
rzmq.Rproj

README.md

rzmq

Build Status AppVeyor Build Status Package-License CRAN Downloads

Purpose

rzmq is an R binding for ZMQ.

Features

rzmq is a message queue for serialized R objects.

  • rzmq implements most the standard socket pairs that ZMQ offers.
  • ZMQ devices are not implemented yet, nor is zmq_poll.
  • Look for more features shortly.

Installation

Binary packages for OS-X or Windows can be installed directly from CRAN:

install.packages("rzmq")

Build from source

Installation from source requires ZeroMQ. On Debian or Ubuntu use libzmq3-dev:

sudo apt-get install -y libzmq3-dev

On Fedora we need zeromq3-devel:

sudo yum install zeromq3-devel

On CentOS / RHEL we install zeromq3-devel via EPEL:

sudo yum install epel-release
sudo yum install zeromq3-devel

On OS-X use zeromq from Homebrew:

brew install zeromq

Usage

A minimal example of remote execution.

execute this R script on the remote server:

#!/usr/bin/env Rscript
library(rzmq)
context = init.context()
socket = init.socket(context,"ZMQ_REP")
bind.socket(socket,"tcp://*:5555")
while(1) {
    msg = receive.socket(socket);
    fun <- msg$fun
    args <- msg$args
    print(args)
    ans <- do.call(fun,args)
    send.socket(socket,ans);
}

and execute this bit locally:

library(rzmq)

remote.exec <- function(socket,fun,...) {
    send.socket(socket,data=list(fun=fun,args=list(...)))
    receive.socket(socket)
}

substitute(expr)
context = init.context()
socket = init.socket(context,"ZMQ_REQ")
connect.socket(socket,"tcp://localhost:5555")

ans <- remote.exec(socket,sqrt,10000)