🎄 Happy Holidays! 🥳
Most of Solace is closed December 24–January 1 so our employees can spend time with their families. We will re-open Thursday, January 2, 2024. Please expect slower response times during this period and open a support ticket for anything needing immediate assistance.
Happy Holidays!
Please note: most of Solace is closed December 25–January 2, and will re-open Tuesday, January 3, 2023.
PubretransmitTimedTask --- Executing timed publisher retransmission
Hi all,
My application meet some problem about sending message to solace server.
The actual production environment suddenly appeared, each message sent to different queue or topic in the same solace server frequently appeared in this log, and the message was retried to send many a time.The printed log is "PubretransmitTimedTask --- Executing timed publisher retransmission".
Firstly, I'm not sure the solace server some queue or topic is abnormal. But regarding the connection established by my application with solace server, is there a number of resending mechanisms to control this case? Because repeated resending consumes my appliction resources, so want has a threshold to control the number of times.
The lib version is
<dependency> <groupId>com.solacesystems</groupId> <artifactId>sol-jms</artifactId> <version>10.9.0</version> </dependency>
This is configure connect with solace serve simple code logic:
ConnectionFactory connectionFactory = SolJmsUtility.createConnectionFactory(url, username, password, vpn, null); CachingConnectionFactory cachingConnectionFactory = new CachingConnectionFactory(); cachingConnectionFactory.setTargetConnectionFactory(connectionFactory); cachingConnectionFactory.setSessionCacheSize(100); CachingConnectionFactory cachingConnectionFactory = (CachingConnectionFactory) context.getBean(cacheConnBeanName); JmsTemplate jmstemplate = new JmsTemplate(); jmstemplate.setConnectionFactory(cachingConnectionFactory);
This is how a message is simple constructed to send to solace serve:
jmstemplate.send("queueName", session -> { TextMessage message = session.createTextMessage(body); return message; }
Could someone please help me in this production case?
Thanks
Gong
Answers
-
Hi @Bruno Gong , do you have a support contract with Solace? If you need production support, that would be the best place to go.
Generally I'd say a timed publisher re-transmit means that there was a temporary network problem to the broker.
0 -
Welcome to the forum! Timed publisher retransmit happens when the publisher is trying to send a Guaranteed message and has not yet received an acknowledgement from the broker within a specific period of time. (I believe it is 2 seconds). Due to message IDs that the API and broker use to keep in sync, it does not mean that your message will be double-published, so that's good.
As Tom said, this can occur due to network problems (is it possible for you to check if any network issues during the timestamps you see), or maybe the CPU for your publisher app is very high and the API is getting starved and cannot process the broker's Guaranteed ACKs fast enough. It is also (maybe?) possible that the Solace broker is under heavy load during those times and not responding fast enough, but that is unlikely... but maybe something to check as well... CPU / network utilization of the broker during those times.
Hope that helps!
EDIT: BTW, it doesn't have anything to do with topics or queues... it's just the response/confirmation from the broker for your message isn't arriving fast enough.
0