Does RFA manages “natively” simultaneous connection to multi DACS?

Hello

I'm working on a java application that embeds RFA (more precisely com.reuters.risk:rfa verson 8.2.1.L3)

This application:

  • connects to a DACS server
  • registers users (by calling AuthorizationAgent.login())
  • queries DACS in order to know whether a user is allowed to access a given PE


One of our customers would like our application to be able to address simultaneously many DACS (because he has many DACS at different places in the word, all having a subset of his users)


I would like to know if RFA already manages “natively” simultaneous connection to multi DACS or if I should handle the request of the client by myself

Thanks for helping

Regards,

Philippe MESMEUR

Tagged:

Best Answer

  • Jirapongse
    Jirapongse ✭✭✭✭✭
    Answer ✓

    @philippe.mesmeur

    Thank you for reaching out to us.

    According to the AuthorizationAgent.login() method, I assumed that you are using OpenDACS API.

    The application can use OpenDACS API to connect to multiple DACS servers by using DACSMC.

    1716277825469.png However, the application must implement this feature.

    I am not sure if the application supports multiple DACS connections.

Answers

  • Hi

    sorry for not relying before now. I had to work on other priority subjects.

    The application can use OpenDACS API to connect to multiple DACS servers by using DACSMC.

    Can you give me more information about what DACSMC is. Should I understand that "MC" stands for "MultiConnect"?

    Do you confirm that when using "DACSMC", I can connect to many DACS?

    I tried to search for "DACSMC" on this forum and I found two interesting links:

    1. https://community.developers.refinitiv.com/questions/104503/rfa-application-connecting-to-multiple-dac-daemons.html
      "You can refer to the dacsMultiConnectSubscribeClient example in the OpenDACS C++ package. This example demonstrates how to use OpenDACS API multiconnection feature to connect with several DACS sink daemons that locate in different hosts (or the same host as the example)."

      where can I find the dacsMultiConnectSubscribeClient example? is there such an example in JAVA?

    2. https://community.developers.refinitiv.com/questions/72988/opendacs-api-net-question-regarding-usage-collecti.html
      this page gives an example in which I found "clues"

      I understand that:
      1. when calling AuthorizationSystem.Acquire(), I have to use "DACSMC" (until now I was using "DACS")
        AuthorizationSystem.Acquire("DACSMC");
      2. I can provide many hosts, via a string containing many host:port separated by a space char
        AuthorizationSystem.setProperty("dacs.daemon", "host1:8211 host2:8211");


    do you think I will get the expected behavior, when doing that ("DACSMC" + multi-hosts)?


    Expected behavior:

    1. two DACS having two different sets of users; in order to make it simple:
      - DACS1 has user1
      - DACS2 has user2
    2. connect to many DACS at the same time
      - e.g. connect to DACS1 and DACS2 at the same time
    3. when AuthorizationAgent.login() is called for a given user, the user is found on the right DACS
      - when calling AuthorizationAgent.login() for user1 it is found on DACS1
      - when calling AuthorizationAgent.login() for user2 it is found on DACS2

    Roughly speaking, DACS1 and DACS2 are driven by the application as being more or less a single DACS


    Many thanks for helping

    Best regards,

    Philippe MESMEUR

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @philippe.mesmeur

    Yes, DACSMC can be used to connect to multiple DACS Sink Daemons.

    To connect to two DACS Sink Daemons, the application needs to acquire two DACSMC.

    1729157800692.png

    You can specify the host and port settings when acquiring DACSMC.

    The examples are in the OpenDACS package. You can download it from the Software Downloads. It is in the Category: MDS - Manageability and Product: Real-Time Open DACS Permission Server API SDK. It supports Java. Please check the API compatibility matrix for the supported compilers and operating systems.

    If you are unable to download it, please contact your LSEG account team or sales team.

  • Hi,

    I downloaded the package and I am starting to investigate DacsMultiConnectSubscribeClient

    In the comments I can read

    This program demonstrates how to use Refinitiv Real-Time Data Access Control System API MultiConnection feature to connect with several Refinitiv Real-Time DACS sink daemons that locate in different host, either local or remote host

    according to my knowledge, they are two kind of DACS:

    • server
    • sink daemons: still according to my knowledge DACS sink daemons are daemons that can be deployed on any hosts and that are connected to "real" DACS servers.

    Do you confirm that using DACSMC, I can connect to either DACS server and DACS Sink daemons?

    Thanks for helping


    Regards,

    Philippe MESMEUR

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @philippe.mesmeur

    OpenDACS API can't directly connect to DACS servers. I can connection to a DACS server via a DACS sink daemon.


    Yes, DACSMC can connect to multiple DACS sink daemons.

  • Hello

    we just started to test the "DACSMC" proposal; as said above:

    1. when calling AuthorizationSystem.Acquire(), I have to use "DACSMC" (until now I was using "DACS")
      AuthorizationSystem.Acquire("DACSMC");
    I can provide many hosts, via a string containing many host:port separated by a space char
    AuthorizationSystem.setProperty("dacs.daemon", "host1:8211 host2:8211");

    However, when trying to connect to DACS with "DACSMC", I get the following error/stack:

    [2024-11-06 15:42:31.006] ERROR main                         com.trmsys.rtmd.core.rtsources.reuters.rfa.RfaFacade              Error com.reuters.rfa.dacs.AuthorizationException: Unknown authorization system (DACSMC)
    at com.reuters.rfa.dacs.AuthorizationSystem.acquireBase(AuthorizationSystem.java:625)
    at com.reuters.rfa.dacs.AuthorizationSystem.acquire(AuthorizationSystem.java:584)
    at ....

    is there something more that I should do with my application?

    is there something I should configure on DACS side?

    For connecting to DACS in Java, I am using

            <dependency>
    <groupId>com.reuters.risk</groupId>
    <artifactId>rfa</artifactId>
    <version>8.2.1.L3</version>
    </dependency>

    Thank you

    Regards,

    Philippe

  • I just realize that what I am doing cannot work, at least with the version of the library that I am using

        private static AuthorizationSystem acquireBase(String var0) throws AuthorizationException {
    synchronized(_GlobalLock) {
                if (!var0.equals("DACS")) {
    String var11 = "Unknown authorization system (" + var0 + ")";
                    throw new AuthorizationException(var11);

    any suggestions? is there something that I did not correctly understand?