Setting acknowledgements to false will help, but your application will not have a means to know if your posting failed, and the failure reason.
PostID is controlled by your application. You can set it to 1, and increment every time post is submitted. Like:
long pID = 1;
pOmmConsumer->submit( PostMsg().postId( pID++ )....
PostID is used to match up infrastructure ACK/NAK response to your post messages. The PostID is returned in the ```AckMsg``` as ```ackId```. Certain infrastructure components like Thomson Reuters Contribution Channel, will reject a post if a unique PostID is not provided.
What is your requirement to post without a PostID?
I need to publish the prices for the ISINs on a service. The problem is that I need to put a different id to on:
pOmmConsumer->submit( PostMsg().postId( id ).serviceName( "PUBNYC" ).name( isin.c_str() ).solicitAck( true ).complete().payload( fileldList ), handle );If not, I may have an error or exception as:
OmmException: Exception Type='OmmInvalidUsageException', Text='Failed to submit PostMsg on login stream. Reason: RSSL_RET_INVALID_ARGUMENT. Error text: Post contains duplicate information (Post exists with ID 1).'
It seems only happening when I 'submit' very fast and many records or ISINs...
it seems if I change solicitAck( true) to false, it works fine now
I just need to and must submit to the service in real-time px, very fast... it should be fine. thanks
As my colleague mentioned, it is generally recommended that you solicitAck - so you are made aware when a Post fails - otherwise your app will never know which of your posts were accepted and which failed - is this something you can accept from an application point of view?
Is there some reason why you cannot simply increment the PostID each time you post - as shown by my colleague?