Rai MD API and RaiMS for Windows x64 evaluation builds

Two installers: RaiMS, the Rai message service (a Rendezvous / NATS / Redis compatible daemon that runs as a Windows service), and Rai MD API, the market data client API with C++, .NET and Java bindings plus the raisub2 / raipub2 / raiping2 / raireplay2 test programs. Install RaiMS first, then Rai MD API, and the test programs will talk to the local service on port 7500.

Download

FileVersionSizeInstalls toSHA-256
raims-1.52.0-109-win64-setup.exe 1.52.0-1094.4 MBC:\Program Files\RaiMS 659a623d10c70422a05fcb04250cdabf91e8016bd8906cb7dff2db341f7ddad7
raimdapi-1.0.0-1-win64-setup.exe 1.0.0-13.3 MBC:\Program Files\RaiMdApi 899f17ca293ebd1365b0d52f5f54988fdd2b7652cdbf6c7ea82719b057b1ac89

Verify a download in PowerShell with Get-FileHash .\raims-1.52.0-109-win64-setup.exe. The installers are not code signed; Windows SmartScreen will ask for confirmation (More info → Run anyway).

Requirements

1. Install RaiMS

Run raims-1.52.0-109-win64-setup.exe (or … /S for a silent install). It:

The generated key is unique to this install. ms_gen_key creates a new service key (config\svc_eval.yaml, signed with the private key in .pass/.salt), and ms_server only networks with peers that hold the same service key — two machines that each ran the installer have two different keys and will not mesh, even with matching transport config. Local clients (rv, NATS, Redis) are not affected; the key only authenticates ms_server to ms_server. To network several ms_servers, generate the key once, export a config per peer with ms_gen_key -x <peer names> -s eval, and copy each exported directory to that host's config\ before starting the service. See the RaiMS guide, Key Configuration.

The evaluation config (config\tport_*.yaml, edit and restart the service to change) listens on:

transportlistens onclients
rv*:7500Rendezvous (rvd) clients, the Rai MD API programs
nats*:4222any NATS client
redis127.0.0.1:6379redis-cli, RESP clients
tel127.0.0.1:2222telnet 127.0.0.1 2222 — the ms_server console

Check it in PowerShell:

& "C:\Program Files\RaiMS\bin\raisvc.exe" status RaiMS          # RaiMS: running (exit 0)
Get-NetTCPConnection -State Listen | ? { $_.LocalPort -in 7500,4222,6379,2222 }
Get-Content "C:\Program Files\RaiMS\log\ms_server.log" -Tail 20

raisvc start|stop|status RaiMS controls the service; ms_server.exe -d config -c runs it in a console instead.

2. Install Rai MD API

Run raimdapi-1.0.0-1-win64-setup.exe (or … /S). It installs to C:\Program Files\RaiMdApi, registers an uninstaller in Apps & features and optionally appends bin to the system PATH.

bin\      raisub2 raipub2 raiping2 raireplay2 (C++)   raisub raipub raiping (C++ v1 api)
          draisub2 draipub2 draiping2 draireplay2 (.NET)   jraisub2.cmd jraipub2.cmd … (Java)
          raimdapi.dll (C api, raiapi2_c.h)   RaiApi2.dll (.NET binding)   jraiapi2.dll jraimsg.dll (JNI)
lib\      raimdapi.lib  libraimdapi.a  *.jar
include\  raiapi2.h  raiapi2_c.h  raiapi.h  and the base/msg/stream/util headers

3. Test

Open two PowerShell windows in C:\Program Files\RaiMdApi\bin. Subscribe in the first, publish from the second (-daemon tcp:7500 is the local RaiMS; use tcp:<host>:7500 for a remote one):

# window 1: wait for one message on subject TEST.HELLO
.\raisub2.exe -daemon tcp:7500 -noDict -msgCount 1 -timeout 30 -subject TEST.HELLO

# window 2: publish one record
.\raipub2.exe -daemon tcp:7500 -subject TEST.HELLO -count 1 -data NAME=hello-windows -form '""'

The subscriber prints the record and exits:

## Subject TEST.HELLO (old state=NO_MSG,new=INITIAL)
MSG_TYPE       : UINT      2 : 8  [INITIAL]
SEQ_NO         : UINT      2 : 1
REC_STATUS     : UINT      2 : 0  [OK]
NAME           : STRING   14 : "hello-windows"

Round-trip latency through the service (publishes and subscribes to itself):

.\raiping2.exe -daemon tcp:7500 -subject PING.TEST -perSec 200 -msgCount 1000
# PING.TEST: r=199.9/s av=0.5 min=0.08 max=2.7ms

The .NET programs take the same arguments (.\draisub2.exe …, .\draipub2.exe …, .\draiping2.exe …) and interoperate with the C++ ones; the Java launchers are jraisub2.cmd, jraipub2.cmd, jraiping2.cmd. Any program accepts -help. The ms_server console shows the connections: telnet 127.0.0.1 2222, then show ports, show subs.

Note for PowerShell: an empty argument must be written '""' (as above for -form); cmd.exe takes plain "".

4. Uninstall

Either from Settings → Apps → Apps & features (entries RaiMS 1.52.0-109 and Rai MD API 1.0.0-1), or from an Administrator prompt:

& "C:\Program Files\RaiMdApi\uninstall.exe" /S
& "C:\Program Files\RaiMS\uninstall.exe" /S

The RaiMS uninstaller stops and removes the service, removes the firewall rule and the PATH entry. The config\ directory with the generated keys is left behind so a reinstall keeps the same identity; delete C:\Program Files\RaiMS\config by hand to remove it. Reinstalling over a running installation is supported (the installer stops the old service first).

Troubleshooting

Source and building

RaiMS is github.com/raitechnology/raims, Rai MD API is github.com/injinj/raimdapi; both are cross compiled on Linux with mingw-w64. Repositories for the sibling libraries, the build host packages, and the commands that produce these installers (and the native Linux builds) are on the build page.

Built 2026-09-04 with the mingw-w64 cross compiler. Questions: contact Rai Technology.