ClientName: TunnelItem Severity: Error Text: Internal Error. Failed to allocated TransportBuffer in TunnelItem.submitSubItemMsg
ClientName: TunnelItem Severity: Error Text: Internal Error. Failed to allocated TransportBuffer in TunnelItem.submitSubItemMsg
Hello Khun @jirapongse.phuriphanvichai,
I'm Ohm from the same team with @lenny.cm.
How can we call the value of GuaranteedOutputBuffers in EmaConfig.xml to be used in tsr in our code?
This is our code when creating a tunnel connection
val consumer = EmaFactory .createOmmConsumer( EmaFactory .createOmmConsumerConfig("/path/to/EmaConfig.xml") .tunnelingKeyStoreFile(emaConfig.privateKey) .tunnelingKeyStorePasswd(emaConfig.privateKeyPassword) ) val tsr: TunnelStreamRequest = EmaFactory .createTunnelStreamRequest() .classOfService( EmaFactory.createClassOfService .authentication(EmaFactory.createCosAuthentication.`type`(CosAuthentication.CosAuthenticationType.NOT_REQUIRED)) .dataIntegrity(EmaFactory.createCosDataIntegrity.`type`(CosDataIntegrity.CosDataIntegrityType.RELIABLE)) .flowControl(EmaFactory.createCosFlowControl.`type`(CosFlowControl.CosFlowControlType.BIDIRECTIONAL).recvWindowSize(1200)) .guarantee(EmaFactory.createCosGuarantee.`type`(CosGuarantee.CosGuaranteeType.NONE)) ) .domainType(EmaRdm.MMT_SYSTEM) .name("tunnel") .serviceName("DDS_TRCE") //tunnel stream handle (a.k.a. parentHandle) val tunnelStreamHandle = consumer.registerClient(tsr, this)
And this is our EmaConfig.xml
<?xml version="1.0" encoding="UTF-8"?> <EmaConfig> <!-- see EMAJ_ConfigGuide.pdf for details --> <ConsumerGroup> <DefaultConsumer value="Consumer_TRCC"/> <ConsumerList> <Consumer> <Name value="TRCC_CONSUMER"/> <Channel value="Channel_TRCC"/> <Dictionary value="Dictionary_TRCC"/> <XmlTraceToStdout value="0" /> </Consumer> </ConsumerList> </ConsumerGroup> <ChannelGroup> <ChannelList> <Channel> <Name value="Channel_TRCC"/> <ChannelType value="ChannelType::RSSL_ENCRYPTED"/> <TcpNodelay value="1"/> <GuaranteedOutputBuffers value="5000"/> <ConnectionPingTimeout value="30000"/> <Host value="contrib01-apac1.platform.refinitiv.biz"/> <Port value="443"/> </Channel> </ChannelList> </ChannelGroup> <DictionaryGroup> <DictionaryList> <Dictionary> <Name value="Dictionary_TRCC"/> <DictionaryType value="DictionaryType::FileDictionary"/> <RdmFieldDictionaryFileName value="/path/to/RDMFieldDictionary"/> <EnumTypeDefFileName value="/path/to/enumtype.def"/> </Dictionary> </DictionaryList> </DictionaryGroup> </EmaConfig>
As I know, OmmConsumerConfig is designed for a client to set config info, not for reading. You can't use OmmConsumerConfig to access the value.
You need to develop a function to parse that EmaConfig.xml file and read the GuaranteedOutputBuffers and then set it to tsr.guaranteedOutputBuffers(int outBuffers);
Hello Refinitiv Team, please kindly help with these errors we got the errors to message multiple times, our application using EMA java
Is this something about the limitation with the message size and rate? would be great if you could shed the light on this issue for us, many thanks.
FYI : not sure this would related or not, in my EMA config file the current setup
<TcpNodelay value="1"/> <GuaranteedOutputBuffers value="5000"/> <ConnectionPingTimeout value="30000"/>
I noticed that your <DefaultConsumer value="Consumer_TRCC"/> and the consumer name configurations are not matching.
I have tried your EmaConfig.xml file with the Contribution example (from this article) and the following code and it works fine.
OmmConsumer consumer = EmaFactory.createOmmConsumer( EmaFactory.createOmmConsumerConfig("C:\drive_d\Project\APIs\EMA_Code\EMA_Java_200_Maven\src\main\java\com\refinitiv\ema\examples\training\consumer\series300\ex342_MP_RCC\\EmaConfigAHS.xml") .consumerName("TRCC_CONSUMER").tunnelingKeyStoreFile(keyStoreFileName) .tunnelingKeyStorePasswd(keyStorePassword) );