Skip to content

JmsMessagingTemplate.convertSendAndReceive fails re-declaring temp queue #47

@ramasa

Description

@ramasa

Using springboot 1.5.11.RELEASE, org.springframework:spring-jms:4.3.15, com.rabbitmq.jms:rabbitmq-jms:1.8.1

@Autowired
JmsMessagingTemplate t;

@GetMapping("/test")
String test() {
	String resp = t.convertSendAndReceive("tq", "request", String.class);
	return resp;
}

@JmsListener(destination = "tq")
String list(Message msg) {
	System.out.println("Received message" + msg);
	return "response";
}

Got below exception

Received messagecom.rabbitmq.jms.client.message.RMQTextMessage@35e0782
2018-04-09 13:42:10.604 ERROR 6340 --- [enerContainer-1] com.rabbitmq.jms.client.RMQSession : RabbitMQ exception on queue declare name(jms-temp-queue-dc5833f7-1870-4a20-b60e-cfc2b93c8dd7), durable(false), exclusive(true), auto-delete(false), properties(null)

java.io.IOException: null
	at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:124) ~[amqp-client-4.3.0.jar:4.3.0]
	at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:120) ~[amqp-client-4.3.0.jar:4.3.0]
	at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:142) ~[amqp-client-4.3.0.jar:4.3.0]
	at com.rabbitmq.client.impl.ChannelN.queueDeclare(ChannelN.java:952) ~[amqp-client-4.3.0.jar:4.3.0]
	at com.rabbitmq.client.impl.recovery.AutorecoveringChannel.queueDeclare(AutorecoveringChannel.java:333) ~[amqp-client-4.3.0.jar:4.3.0]
	at com.rabbitmq.jms.client.RMQSession.declareRMQQueue(RMQSession.java:838) [rabbitmq-jms-1.8.1.jar:1.8.1]
	at com.rabbitmq.jms.client.RMQSession.declareDestinationIfNecessary(RMQSession.java:615) [rabbitmq-jms-1.8.1.jar:1.8.1]
	at com.rabbitmq.jms.client.RMQSession.createProducer(RMQSession.java:606) [rabbitmq-jms-1.8.1.jar:1.8.1]
	at org.springframework.jms.listener.adapter.AbstractAdaptableMessageListener.sendResponse(AbstractAdaptableMessageListener.java:403) [spring-jms-4.3.15.RELEASE.jar:4.3.15.RELEASE]
	at org.springframework.jms.listener.adapter.AbstractAdaptableMessageListener.handleResult(AbstractAdaptableMessageListener.java:253) [spring-jms-4.3.15.RELEASE.jar:4.3.15.RELEASE]
	at org.springframework.jms.listener.adapter.MessagingMessageListenerAdapter.onMessage(MessagingMessageListenerAdapter.java:71) [spring-jms-4.3.15.RELEASE.jar:4.3.15.RELEASE]
	at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:719) [spring-jms-4.3.15.RELEASE.jar:4.3.15.RELEASE]
	at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:679) [spring-jms-4.3.15.RELEASE.jar:4.3.15.RELEASE]
	at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:649) [spring-jms-4.3.15.RELEASE.jar:4.3.15.RELEASE]
	at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:317) [spring-jms-4.3.15.RELEASE.jar:4.3.15.RELEASE]
	at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:255) [spring-jms-4.3.15.RELEASE.jar:4.3.15.RELEASE]
	at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1168) [spring-jms-4.3.15.RELEASE.jar:4.3.15.RELEASE]
	at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1160) [spring-jms-4.3.15.RELEASE.jar:4.3.15.RELEASE]
	at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1057) [spring-jms-4.3.15.RELEASE.jar:4.3.15.RELEASE]
	at java.lang.Thread.run(Unknown Source) [na:1.8.0_162]
Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=405, reply-text=RESOURCE_LOCKED - cannot obtain exclusive access to locked queue 'jms-temp-queue-dc5833f7-1870-4a20-b60e-cfc2b93c8dd7' in vhost '/', class-id=50, method-id=10)
	at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:66) ~[amqp-client-4.3.0.jar:4.3.0]
	at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:36) ~[amqp-client-4.3.0.jar:4.3.0]
	at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:443) ~[amqp-client-4.3.0.jar:4.3.0]
	at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:263) ~[amqp-client-4.3.0.jar:4.3.0]
	at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:136) ~[amqp-client-4.3.0.jar:4.3.0]
	... 17 common frames omitted
Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=405, reply-text=RESOURCE_LOCKED - cannot obtain exclusive access to locked queue 'jms-temp-queue-dc5833f7-1870-4a20-b60e-cfc2b93c8dd7' in vhost '/', class-id=50, method-id=10)
	at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:509) ~[amqp-client-4.3.0.jar:4.3.0]
	at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:340) ~[amqp-client-4.3.0.jar:4.3.0]
	at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:162) ~[amqp-client-4.3.0.jar:4.3.0]
	at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:109) ~[amqp-client-4.3.0.jar:4.3.0]
	at com.rabbitmq.client.impl.AMQConnection.readFrame(AMQConnection.java:643) ~[amqp-client-4.3.0.jar:4.3.0]
	at com.rabbitmq.client.impl.AMQConnection.access$300(AMQConnection.java:47) ~[amqp-client-4.3.0.jar:4.3.0]
	at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:581) ~[amqp-client-4.3.0.jar:4.3.0]
	... 1 common frames omitted

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions