Antonio Fermiano Posted July 27, 2020 Share Posted July 27, 2020 We are evaluating TIBCO FTL solution for our product, however I'm having some issues. Scenario: 1) Application A (publisher) sending packages to application B (subscriber). 2) Multicast transport. 3) Prefetch != 0, therefore using durable as message broker. 4) Windows server 2012, everything in the same machine, including FTL server. 5) Packet size: 1024 bytes. 6) Data rate: 12mb/s (~12200 packets per second). 7) Managed format. 8) Using C library. I'm playing with message delivery reliability, so application B: 1) Closes itself each 2 seconds - first time closing gracefully return 0 after finishing a callback, second time with a segfault inside the callback function. This simulates a complete disaster situation. 2) Application B handles duplicated packets properly, as far as I can see. 3) Both application A and application B logthe content they sendand receive, so I can compare if the durable delivered everything to application B, even with all the carnage. If I use "implicit ACK", or in other words, if I use TIBCO API in application B as: tibProperties_SetBoolean(ex, props, TIB_SUBSCRIBER_PROPERTY_BOOL_EXPLICIT_ACK, 0); (or just omit it) Then I receivemost of the packages in application B, but I still lose a few parts:sometimes I lose a single packet, sometimes a whole block. If I use "explicit ACK", meaning: tibProperties_SetBoolean(ex, props, TIB_SUBSCRIBER_PROPERTY_BOOL_EXPLICIT_ACK, 1); and acknowledge each packet individually: tibMessage_Acknowledge(ex, msgs); I don't miss anything in Application B. I have attached the configuration JSON I'm using (Application: rvftlconverterapp, Application A = endpoint1, Application B = endpoint2). Does it make sense to miss packets when using explicit ACK Am I misusing the API Am I configuring it wrong Is it a bug Link to comment Share on other sites More sharing options...
Antonio Fermiano Posted August 31, 2020 Author Share Posted August 31, 2020 In my original questions, I said: "Prefetch != 0, therefore using durable as message broker". Revisiting the manual, I understand that it's recommended that prefetch is zero in case of direct connection, but this value does not decide if FTL is going to make a direct connection or message broker pattern. If that's true, it's not clear to me how to configure a direct connection or message broker pattern... Can explain me better please If both endpoints in a application have compatible transports (e.g: shared memory transports pointing to the same memory segment) then is direct connection between both guaranteed Thank you. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now