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.
| File | Version | Size | Installs to | SHA-256 |
|---|---|---|---|---|
| raims-1.54.0-112-win64-setup.exe | 1.54.0-112 | 4.4 MB | C:\Program Files\RaiMS |
a50e7171cef49808edbdfea590d5d765b31fa19b91a697ef64391389672c0f73 |
| raims-1.54.0-112-win64-debug.zip | 1.54.0-112 | 38.4 MB | debug symbols, optional | 768207735741d2fcb27ec7989f951ee438a173c4348b4f6f4a7ed8e50072314c |
| raimdapi-1.2.0-4-win64-setup.exe | 1.2.0-4 | 3.5 MB | C:\Program Files\RaiMdApi |
d6edb892f47f263f5e7ddd35a396d62316195fd2a3d0426b8b8fcbc0cb408c54 |
| raimdapi-1.2.0-4-win64-debug.zip | 1.2.0-4 | 50.2 MB | debug symbols, optional | f0a17b186a417812c507bf1e2544cd1eb2f53202f20d6f1f8984b8fe06a36a63 |
Verify a download in PowerShell with Get-FileHash .\raims-1.54.0-112-win64-setup.exe.
The installers are not code signed; Windows SmartScreen will ask for confirmation (More info → Run anyway).
RaiApi2, with
raimdapi.dll and its runtime libraries bundled for win-x64 — no installer needed for a .NET project:
dotnet nuget add source https://www.raitechnology.com/nuget/index.json -n raitechnology dotnet add package RaiApi2.NET Framework 4.7.2+ projects get the native libraries copied to their output directory; .NET 6/8/9 resolve them by runtime id.
examples\c++,
examples\java and examples\dotnet, next to their binaries in bin\.SOURCES.txt in the install directory records the git commit of raimdapi and of
every library it was built against, plus the compiler and build date. The optional -debug.zip above holds the
debug symbols (.debug files with gnu_debuglink); unpack it into bin\ and gdb or
addr2line resolve addresses from a crash report. Functionally the libraries are the 1.2.0-3 build
(a LICENSE file was added to the repository).SOURCES.txt and debug-symbols zip; the server, configuration
and the service wrapper are unchanged, installing over 1.54.0-111 keeps config\.-api omm switch. Every program and binding (C++, .NET, Java) can now
consume from an OMM / RWF provider (an ADS, RTDS or any RSSL interactive provider) instead of a Rendezvous
daemon: -api omm -daemon <host:14002>. Subjects are SERVICE.SECTOR.RIC
(e.g. IDN_RDF.REC.IBM.N); the service and sector are matched against the provider's source directory,
and the RDM field dictionary is downloaded at login (or loaded from files with -rdmPath). Records
arrive as the same sass-form messages (MSG_TYPE / SEQ_NO / REC_STATUS plus
dictionary-named fields), so callbacks and downstream code are unchanged. Consumer only in this release:
Publish() raises UNSUPPORTED_MTHD. The default remains -api tibrv.RAIMSG_CVT_PRECISION environment variable (default: shortest exact representation). Go bindings were
added to the source tree (src/raiapi/golang); they are not part of the Windows package.config\.raipub2 / raisub2 / raiping2 programs and the .NET / Java bindings are unchanged in use.rv transport shares the same code);
timer interval fix for zero-interval timers. Configuration and the service wrapper are unchanged; installing over
1.52.0-109 keeps config\.Program Files need them).bin\.draisub2.exe …): the .NET 9 runtime — winget install Microsoft.DotNet.Runtime.9.jraisub2.cmd …): a JRE 21 or newer on the PATH.Run raims-1.54.0-112-win64-setup.exe (or … /S for a silent install). It:
ms_server.exe, ms_gen_key.exe, raisvc.exe and the evaluation config to C:\Program Files\RaiMS;ms_gen_key -d config -s eval -y -f) the first time only — keys survive upgrades;ms_server.exe;bin to the system PATH.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:
| transport | listens on | clients |
|---|---|---|
| rv | *:7500 | Rendezvous (rvd) clients, the Rai MD API programs |
| nats | *:4222 | any NATS client |
| redis | 127.0.0.1:6379 | redis-cli, RESP clients |
| tel | 127.0.0.1:2222 | telnet 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.
Run raimdapi-1.2.0-4-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
examples\ c++ java dotnet sources of the programs in bin\
SOURCES.txt git commits of raimdapi and every sibling library in this build
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.
OMM source instead of RaiMS. With an OMM provider reachable (RaiMS does not provide one), the same subscriber
reads a market price record straight from it — add -api omm and point -daemon at the
provider's RSSL port:
.\raisub2.exe -api omm -daemon tcp:ads.example.com:14002 -msgCount 1 -timeout 30 -subject IDN_RDF.REC.IBM.N # optional: -appName <name> (login ApplicationName), -rdmPath <dir> (local RDMFieldDictionary/enumtype.def), -noRdmDict
The output has the same shape as above (MSG_TYPE, SEQ_NO, REC_STATUS, then
BID, ASK, TRDPRC_1, … named by the RDM dictionary). draisub2.exe
and jraisub2.cmd take the identical arguments.
Note for PowerShell: an empty argument must be written '""' (as above for -form); cmd.exe takes plain "".
Either from Settings → Apps → Apps & features (entries RaiMS 1.54.0-112 and Rai MD API 1.2.0-4), 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).
raisvc status RaiMS, then log\ms_server.out and log\ms_server.log.Get-NetFirewallRule -DisplayName "RaiMS ms_server".ms_server by hand: the config directory has no key yet —
ms_gen_key -d config -s eval -y -f.UnsupportedClassVersionError means the JRE is older than 21.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-10-14 with the mingw-w64 cross compiler. Questions: contact Rai Technology.