R Bindings for 'ZeroMQ'
Interface to the 'ZeroMQ' lightweight messaging kernel (see http://www.zeromq.org/ for more information).
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.
Binary packages for OS-X or Windows can be installed directly from CRAN:
install.packages("rzmq")
Installation from source requires ZeroMQ
. On Debian or Ubuntu use libzmq3-dev:
sudo apt-get install -y libzmq3-dev
On Fedora we need zeromq-devel:
sudo yum install zeromq-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
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)