Riak Resolution Proxy Client

Latest on Hackage:0.1.1

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

BSD3 licensed by Bump Technologies, Inc
Maintained by
Haskell Client for Montage


Built and tested with ghc 7.4.1

Install the non-hackage dependencies::

git clone
cd StatsWeb && cabal install

git clone
cd riak-haskell-client && cabal install

From montage-haskell-client/ execute::

cabal install

We recommend using a sandbox, hsenv is particularly good.

To setup montage itself, see


The montage proxy is port configurable (here given the Config handle set to 7078), with riak running on 8087::

import Network.Riak (defaultClient, connect, disconnect, Client(port), Connection)
import Data.Conduit.Pool (Pool, createPool)

import Network.Riak.Montage

main :: IO ()
main = do
mainPool <- createPool
(connect $ defaultClient {port = "8087"})
1 -- stripes
10 -- timeout
300 -- max connections

let cfg' = cfg { proxyPort = 7078 }

runDaemon (cfg' :: Config ResObject) mainPool

See montage for how to define resolutions for a resolution object (ResObject), which is also required to start the proxy.

Your client's request pool must connect (not bind) to that port::

import Data.Conduit.Pool (Pool, createPool)
import System.ZMQ as ZMQ

import Network.Riak.MontageClient

montageZpool <- createPool (do
s <- ZMQ.socket ctx Req
ZMQ.connect s "tcp://localhost:7078"
return s
) ZMQ.close 1 5 1

let (bucket, key) = ("u-info", "1")
resp <- montageGet montageZpool bucket key

See Examples and More for full documentation of client requests.

To setup the examples, first download hprotoc::

cabal install hprotoc

Then execute::

cd examples && hprotoc user.proto

You must have montage installed to run the basic proxy which the examples talk with. In your external montage/ directory::

cd examples && runhaskell basic_proxy.hs

See for more on the montage haskell setup.

To run the examples, in examples/ execute::

runhaskell Resolution.hs -- a basic last write wins resolution
runhaskell Delete.hs -- tests a delete after a put
runhaskell Many.hs -- asserts the identity of put many -> get many
runhaskell Reference.hs -- a basic, multi-target reference get


See the haddock documentation for type-signatures, descriptions, and source of client functions.
comments powered byDisqus