SolaceMessageProducer Not Blocking Send call while sending on incorrect queue

I am using solace-jms-spring-boot-starter (4.1.0) with all default properties
solace:
jms:
msgVpn: default
host: smf://default:55555}
clientName: default
clientPassword:
directTransport: false
I am autowiring  @ConnectionFactory  and  @JmsTemplate >  and using it directly to consumer and publish messages on Solace. I was able to consume messages correctly
but while publishing message on solace if I configure queue name incorrectly on purpose publisher is not throwing exception right away, it executes the next line as well
if try{
publisher.send(message, queueNotAvailable); <----- if wrong queue name mentioned
log.info(“message sent”); <— it still prints this
}catch(Exception e){
log.error(“exception caught”); <— control flow not coming here
}
just after printing “message sent”
I get below exception but not in catch block
com.solacesystems.jcsmp.JCSMPErrorResponseException: 400: Queue Not Found
and then transaction gets rolled back and message gets redelivered again.
note : When I use MQ approach ibm-mq-spring-starter This works as expected.

Am I missing something here ? I want the control flow to go in the exception block instead of going to next line and then print exception

Any help is much appreciated

Thanks

Hi @dpratik23 ,
What type of object is your publisher > mentioned here?
publisher.send(message, queueNotAvailable); <----- if wrong queue name mentioned

I tried sending with a org.springframework.jms.core.JmsTemplate object and it seems to work how you expected - the send threw an exception and the println didn’t get hit. I just slightly modified this example > .
@Value(“SpringTestQueueInvalid”)

private String queueName;
@Scheduled(fixedRate = 15000)
public void sendEvent() throws Exception {
String msg = “Hello World " + System.currentTimeMillis();
System.out.println(”==========SENDING MESSAGE========== " + msg);
jmsTemplate.convertAndSend(queueName, msg);
System.out.println("==========MESSAGE SENT========== " + msg);
}

.   ____          _            __ _ _
 /\ / __ _ () __  __ _ \ \ \
( ( )_
_ | '_ | '| | ’ / ` | \ \ \
 \/  )| |)| | | | | || (| |  ) ) ) )
  ’  |
| .__|| ||| |_, | / / / /
 =========|
|==============|/=////
[32m :: Spring Boot :: [39m      [2m (v2.1.4.RELEASE)[0;39m
[2m2022-01-28 11:35:16.300[0;39m [32m INFO[0;39m [35m85697[0;39m [2m—[0;39m [2m[           main][0;39m [36mc.s.s.spring.boot.SpringBootSender      [0;39m [2m:[0;39m Starting SpringBootSender on MJD-MacBook-Pro.localdomain with PID 85697 (/Users/marcdipasquale/dev/git/solace-samples-spring/spring-boot-autoconfig-sender/target/classes started by marcdipasquale in /Users/marcdipasquale/dev/git/solace-samples-spring/spring-boot-autoconfig-sender)
[2m2022-01-28 11:35:16.304[0;39m [32m INFO[0;39m [35m85697[0;39m [2m—[0;39m [2m[           main][0;39m [36mc.s.s.spring.boot.SpringBootSender      [0;39m [2m:[0;39m No active profile set, falling back to default profiles: default
[2m2022-01-28 11:35:16.945[0;39m [32m INFO[0;39m [35m85697[0;39m [2m—[0;39m [2m[           main][0;39m [36mfaultConfiguringBeanFactoryPostProcessor[0;39m [2m:[0;39m No bean named ‘errorChannel’ has been explicitly defined. Therefore, a default PublishSubscribeChannel will be created.
[2m2022-01-28 11:35:16.960[0;39m [32m INFO[0;39m [35m85697[0;39m [2m—[0;39m [2m[           main][0;39m [36mfaultConfiguringBeanFactoryPostProcessor[0;39m [2m:[0;39m No bean named ‘integrationHeaderChannelRegistry’ has been explicitly defined. Therefore, a default DefaultHeaderChannelRegistry will be created.
[2m2022-01-28 11:35:17.019[0;39m [32m INFO[0;39m [35m85697[0;39m [2m—[0;39m [2m[           main][0;39m [36mtrationDelegate$BeanPostProcessorChecker[0;39m [2m:[0;39m Bean ‘org.springframework.integration.config.IntegrationManagementConfiguration’ of type [org.springframework.integration.config.IntegrationManagementConfiguration$$EnhancerBySpringCGLIB$$7fb362bd] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
[2m2022-01-28 11:35:17.040[0;39m [32m INFO[0;39m [35m85697[0;39m [2m—[0;39m [2m[           main][0;39m [36mtrationDelegate$BeanPostProcessorChecker[0;39m [2m:[0;39m Bean ‘integrationDisposableAutoCreatedBeans’ of type [org.springframework.integration.config.annotation.Disposables] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
[2m2022-01-28 11:35:17.514[0;39m [32m INFO[0;39m [35m85697[0;39m [2m—[0;39m [2m[           main][0;39m [36mo.s.s.c.ThreadPoolTaskScheduler         [0;39m [2m:[0;39m Initializing ExecutorService ‘taskScheduler’
[2m2022-01-28 11:35:17.602[0;39m [32m INFO[0;39m [35m85697[0;39m [2m—[0;39m [2m[           main][0;39m [36mo.s.i.endpoint.EventDrivenConsumer      [0;39m [2m:[0;39m Adding {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the ‘errorChannel’ channel
[2m2022-01-28 11:35:17.602[0;39m [32m INFO[0;39m [35m85697[0;39m [2m—[0;39m [2m[           main][0;39m [36mo.s.i.channel.PublishSubscribeChannel   [0;39m [2m:[0;39m Channel ‘application.errorChannel’ has 1 subscriber(s).
[2m2022-01-28 11:35:17.602[0;39m [32m INFO[0;39m [35m85697[0;39m [2m—[0;39m [2m[           main][0;39m [36mo.s.i.endpoint.EventDrivenConsumer      [0;39m [2m:[0;39m started _org.springframework.integration.errorLogger
==========SENDING MESSAGE========== Hello World 1643387717608
2022-01-28 11:35:17.610  INFO 85697 — [           main] c.s.s.spring.boot.SpringBootSender       : Started SpringBootSender in 1.578 seconds (JVM running for 2.163)
2022-01-28 11:35:17.671  INFO 85697 — [   scheduling-1] c.s.j.protocol.impl.TcpClientChannel     : Connecting to host ‘orig=tcp://localhost:4444, scheme=tcp://, host=localhost, port=4444’ (host 1 of 1, smfclient 1, attempt 1 of 1, this_host_attempt: 1 of 1)
2022-01-28 11:35:17.704  INFO 85697 — [   scheduling-1] c.s.j.protocol.impl.TcpClientChannel     : Connected to host ‘orig=tcp://localhost:4444, scheme=tcp://, host=localhost, port=4444’ (smfclient 1)
2022-01-28 11:35:17.892  INFO 85697 — [2_ReactorThread] c.s.jcsmp.impl.JCSMPXMLMessageProducer   : Error Response (400) - Queue Not Found - Topic ‘#P2P/QUE/SpringTestQueueInvalid’
2022-01-28 11:35:17.909 ERROR 85697 — [   scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler    : Unexpected error occurred in scheduled task.
org.springframework.jms.InvalidDestinationException: Error sending message - queue not found (400: Queue Not Found - Topic ‘#P2P/QUE/SpringTestQueueInvalid’); nested exception is javax.jms.InvalidDestinationException: Error sending message - queue not found (400: Queue Not Found - Topic ‘#P2P/QUE/SpringTestQueueInvalid’)
at org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:280) ~[spring-jms-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:185) ~[spring-jms-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:507) ~[spring-jms-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:584) ~[spring-jms-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.jms.core.JmsTemplate.convertAndSend(JmsTemplate.java:661) ~[spring-jms-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at com.solace.samples.spring.boot.SpringBootSender.sendEvent(SpringBootSender.java:46) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_201]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_201]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_201]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_201]
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_201]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [na:1.8.0_201]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_201]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [na:1.8.0_201]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_201]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_201]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_201]
Caused by: javax.jms.InvalidDestinationException: Error sending message - queue not found (400: Queue Not Found - Topic ‘#P2P/QUE/SpringTestQueueInvalid’)