Hi Team,
Need your help to find the solution.
Current Implementation details,
SolConnectionFactory connectionFactory = SolJmsUtility.createConnectionFactory(); → for create connection factory
using host , vpn,trust store,keystore with auth scheme AUTHENTICATION_SCHEME_CLIENT_CERTIFICATE
this.connection = connectionFactory.createConnection(); → connection creation
session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE); → session creation using client acknowledge
Using MessageListener to listen the queue
public class MyListener implements MessageListener
public void onMessage(Message message) -> receive the message and process
{in this method validating the message(poison message ) and publish to kafka,
once receive the success message from kafka acknowledge the message}
message.acknowledge();
Problem : If kafka broker went down how to do retry ? we had a discussion with internal solace team.
Our Assumption:
If client is not calling the message.acknowledge(); → solace will do the retry but internal solace team clarified that it is using windowing mechanism, so if subsequent message is acknowledge then previous message will also acknowledged and deleted.
Their suggestion is send back the NACK(negative acknowledgment) for failed message then solace can do retry that message.
How to send the NACK using Java API ?
What are the suggested value for Max_Un_Ack_Message and Max_Redeliver_Count?
Maven Dependency for Solace:
com.solacesystems
sol-jms
10.0.0