Intermittent "Assured message delivery is not enabled on this channel" errors
Hi there,
We've had this publisher app that sends events to topics other client apps in the firm are subscribed to using queues of their own, for years.
Lately, though, we've started to notice these exceptions intermittently that we've encountered previously. The client profile has "Allow Guaranteed message send
" enabled the whole time. As you can tell, we use JMS to send messages using JNDI, and the connection factory did not have "Direct Transport
" enabled previously, but we tried enabling it, and it has not helped. Retrying the sending a few times does help get the message sent, but this obviously isn't sustainable.
FWIW, the publisher and consumer apps sharethe same client profile.
Any help would be greatly appreciated. Thanks in advance!
com.solacesystems.jcsmp.InvalidOperationException: Cannot send assured message: Assured message delivery is not enabled on this channel.
at com.solacesystems.jcsmp.impl.JCSMPXMLMessageProducer.sendMsgOnce(JCSMPXMLMessageProducer.java:1109)
at com.solacesystems.jcsmp.impl.JCSMPXMLMessageProducer.sendImpl(JCSMPXMLMessageProducer.java:1042)
at com.solacesystems.jcsmp.impl.JCSMPXMLMessageProducer.sendToDestination(JCSMPXMLMessageProducer.java:853)
at com.solacesystems.jcsmp.impl.JCSMPXMLMessageProducer.sendToDestination(JCSMPXMLMessageProducer.java:794)
at com.solacesystems.jcsmp.impl.JCSMPXMLMessageProducer.send(JCSMPXMLMessageProducer.java:614)
at com.solacesystems.jms.impl.JCSMPMessageProducer.send(JCSMPMessageProducer.java:26)
at com.solacesystems.jms.impl.DefaultMessageProducerAdapter.send(DefaultMessageProducerAdapter.java:168)
at com.solacesystems.jms.SolMessageProducer.sendMessage(SolMessageProducer.java:381)
... 41 common frames omitted
Wrapped by: com.solacesystems.jms.ConfigurationException: Error sending message - operation not supported on router (Cannot send assured message: Assured message delivery is not enabled on this channel.)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at com.solacesystems.jms.impl.JMSExceptionValue.newInstance(JMSExceptionValue.java:36)
at com.solacesystems.jms.impl.JCSMPExceptionMapper$ArrayListMapper.get(JCSMPExceptionMapper.java:32)
at com.solacesystems.jms.impl.JCSMPExceptionMapper.get(JCSMPExceptionMapper.java:95)
at com.solacesystems.jms.impl.Validator.createJMSException(Validator.java:582)
at com.solacesystems.jms.SolMessageProducer.sendMessage(SolMessageProducer.java:388)
at com.solacesystems.jms.SolMessageProducer.send(SolMessageProducer.java:165)
at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:634)
at org.springframework.jms.core.JmsTemplate.doSend(JmsTemplate.java:608)
at org.springframework.jms.core.JmsTemplate.lambda$send$3(JmsTemplate.java:586)
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:504)
... 36 common frames omitted
Wrapped by: org.springframework.jms.UncategorizedJmsException: Uncategorized exception occurred during JMS processing; nested exception is com.solacesystems.jms.ConfigurationException: Error sending message - operation not supported on router (Cannot send assured message: Assured message delivery is not enabled on this channel.)
at org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:311)
at org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:185)
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:507)
at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:584)
at org.springframework.jms.core.JmsTemplate$$FastClassBySpringCGLIB$$2439e2e0.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:687)
at org.springframework.jms.core.JmsTemplate$$EnhancerBySpringCGLIB$$d3722a51.send(<generated>)
at com.my.comp.config.notifier.event.SourceSystemNotifier.sendEventToDownstream(SourceSystemNotifier.java:120)
at com.my.comp.config.notifier.event.SourceSystemNotifier.sendNotification(SourceSystemNotifier.java:87)
at com.my.comp.config.notifier.event.SourceSystemNotifier$$FastClassBySpringCGLIB$$932157ee.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:88)
at com.my.comp.LoggingAspect.profileAllMethods(LoggingAspect.java:35)
at jdk.internal.reflect.GeneratedMethodAccessor46.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691)
at com.my.comp.config.notifier.event.SourceSystemNotifier$$EnhancerBySpringCGLIB$$bcd53e65.sendNotification(<generated>)
at com.my.comp.service.EventManagementServiceImpl.lambda$sendNotification$4(EventManagementServiceImpl.java:271)
at java.base/java.util.Collections$SingletonList.forEach(Collections.java:4856)
at com.my.comp.service.EventManagementServiceImpl.sendNotification(EventManagementServiceImpl.java:271)
at com.my.comp.service.EventManagementServiceImpl.lambda$notificationSender$3(EventManagementServiceImpl.java:252)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at com.my.comp.util.MDCUtils.lambda$withMdc$3(MDCUtils.java:97)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Comments
-
Hi @mystarrocks..! If you're a Solace customer with active Support, please email support@solace.com for immediate help troubleshooting this. Sounds strange.
If you don't pay for support, then let's see if anyone here has an idea to troubleshoot. Strange that it's intermittent. Does anything show up in the broker's
event.log
during these issues? Like, the broker is having an HA failover, or the disk performance is suffering?1 -
Thanks for the comment, @Aaron. Yes, I am going to have to reach out to our central admin group and have them investigate/contact Solace support. I obviously don't have access to the
event.log
(wish I did), but those are definitely possibilities we should look into. Thanks again!1