question

Upvotes
Accepted
3 0 0 3

Consumer configuration for WarmStandby

Hello,

We use RTC, which is connected to RTO, to retrieve quotes data.

We are connecting to 2 instances of RTC with 2 instances of a client application using RTSDK Java, and we are wondering about setting up a resilient connection in all this by configuring multiple channels.

Ideally, we'd like to configure all this via EmaConfig.xml, and not programmatically.

In doing some research, I've seen two ways of doing this, but I'd like to know what the difference is between the two, and what each of the two methods offers me.

The first way is to set up a channelGroup, like this :

<Consumer>
    <Name value="Consumer_2"/>
    <ChannelSet value="Channel_1, Channel_2"/>
    <Dictionary value="Dictionary_2"/>
    <XmlTraceToStdout value="0"/>
</Consumer>
<ChannelGroup>
    <ChannelList>
        <Channel>
            <Name value="Channel_1"/>
            <ChannelType value="ChannelType::RSSL_SOCKET"/>
            <Host value="a-side_RTC"/>
            <Port value="14002"/>
        </Channel>
        <Channel>
            <Name value="Channel_2"/>
            <ChannelType value="ChannelType::RSSL_SOCKET"/>
            <Host value="b-side_RTC"/>
            <Port value="14002"/>
        </Channel>
   </ChannelList>
</ChannelGroup>

In my tests with this configuration, I find that when one instance of RTC is stopped, the other instance is used.

I've seen other ways of configuring, like this that I haven't tested:

<WarmStandbyServerInfoGroup>
    <WarmStandbyServerInfoList>
        <WarmStandbyServerInfo>
            <Name value="Server_Info_1"/>
            <Channel value="Channel_1"/>
            <PerServiceNameSet value=""/>
        </WarmStandbyServerInfo>
        <WarmStandbyServerInfo>
            <Name value="Server_Info_2"/>
            <Channel value="Channel_7"/>
            <PerServiceNameSet value=""/>
        </WarmStandbyServerInfo>
    </WarmStandbyServerInfoList>
</WarmStandbyServerInfoGroup>


<WarmStandbyGroup>
    <WarmStandbyList>
        <WarmStandbyChannel>
            <Name value="WarmStandbyChannel_1"/>
            <StartingActiveServer value="Server_Info_1"/>
            <StandbyServerSet value="Server_Info_2"/>
            <WarmStandbyMode value="WarmStandbyMode::LOGIN_BASED"/>
        </WarmStandbyChannel>
    </WarmStandbyList>
</WarmStandbyGroup>


So I'd like to have a comparison between the two, and please tell me what advantages each approach offers?

Many thanks in advance!

#technologyjavaconsumerwarm-standby
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

· Write an Answer
Upvotes
Accepted
22.6k 59 14 21

Hi @massinissa.bitous-ext,

This article on resiliency can explain some of the concepts.

Essentially, in the first configuration example- the ChannelSet uses cold-standby feature. This means a connection is established and used and only upon termination of the first connection, a second connection to Channel2 will be established. So, only one connection is active at any given time.

In the warm standby mode, two concurrent connections are made simultaneously and the items are subscribed to both the channels. The standby channel is instructed to not send updates - but the connection is established and it is ready to send data when it is instructed to become a primary. The recovery on the warm standby channel will be faster then that with cold standby feature.

Now, since you are using RTSDK Java, your application doesn't need to use RTC to get data from RTO, It has the ability to directly connect and get data from RTO.

If however you intend to keep the same architecture and implement warm standby with RTC, be aware that both the RTC will open the subscription to all the instruments, and your network bandwidth requirement would double.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.