Hello,
I have a client talking to a server via Spring Integration/AMQP and RabbitMQ. The client uses an amqp:outbound-gateway and the server uses an amqp:inbound-gateway configuration.
When the client creates a message which processes without errors, the response is sent back as expected.
When the client creates a message which causes the server to throw an exception, it seems as if the message is sent right back into the server, causing yet another exception - etc.
The server code responsible for returning a reply is a @ServiceActivator with the following general appearance:
Some excerpts from my log:Code:@ServiceActivator(inputChannel="xmlProcessingRequestChannel") public byte[] handleMessage(final Message<String> message) throws Exception { LOG.debug("Handling AMQP message: " + message); ...process message, return byte[] or throw exception...
Code:15:16:51,321 [SimpleAsyncTaskExecutor-1] WARN org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer Execution of Rabbit message listener failed, and no ErrorHandler has been set. org.springframework.amqp.rabbit.listener.ListenerExecutionFailedException: Listener threw exception at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.wrapToListenerExecutionFailedExceptionIfNeeded(AbstractMessageListenerContainer.java:588) at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:527) at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:470) at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$001(SimpleMessageListenerContainer.java:57) at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$1.invokeListener(SimpleMessageListenerContainer.java:106) at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.invokeListener(SimpleMessageListenerContainer.java:587) at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:450) at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:463) at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:447) at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$200(SimpleMessageListenerContainer.java:57) at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:532) at java.lang.Thread.run(Thread.java:722)[:1.7.0_03] 2012-05-24 15:16:51,333 [main] DEBUG Service.class Marking service as idle 2012-05-24 15:16:51,333 [main] DEBUG Service.class Processing 1 incoming messages 2012-05-24 15:16:51,333 [main] DEBUG Service.class Service received taskRunner message: com.myproduct.xml.scheduler.Service$2$1@76dd8c85 2012-05-24 15:16:51,333 [main] DEBUG Service.class Marking service as executing 2012-05-24 15:16:51,333 [main] DEBUG Service.class Executing job processing tasks 2012-05-24 15:16:51,333 [main] DEBUG Service.class Processing tasks 2012-05-24 15:16:51,333 [main] DEBUG Service.class Executing task: PrintJobExecutorTask 2012-05-24 15:16:51,333 [SimpleAsyncTaskExecutor-1] DEBUG org.springframework.amqp.rabbit.listener.BlockingQueueConsumer Rejecting messages 2012-05-24 15:16:51,333 [SimpleAsyncTaskExecutor-1] DEBUG org.springframework.amqp.rabbit.listener.BlockingQueueConsumer Retrieving delivery for Consumer: tag=[amq.ctag-AZGJvn5oMDpb7zB_wFoOrZ], channel=Cached Rabbit Channel: AMQChannel(amqp://guest@127.0.0.1:5672/,3), acknowledgeMode=AUTO local queue size=0 2012-05-24 15:16:51,334 [pool-1-thread-3] DEBUG org.springframework.amqp.rabbit.listener.BlockingQueueConsumer Storing delivery for Consumer: tag=[amq.ctag-AZGJvn5oMDpb7zB_wFoOrZ], channel=Cached Rabbit Channel: AMQChannel(amqp://guest@127.0.0.1:5672/,3), acknowledgeMode=AUTO local queue size=0 2012-05-24 15:16:51,334 [SimpleAsyncTaskExecutor-1] DEBUG org.springframework.amqp.rabbit.listener.BlockingQueueConsumer Received message: (Body:'<xml test="4"/'; ID:null; Content:text/plain; Headers:{spring_reply_correlation=3199198d-f273-49f6-900c-8e414ae2a566, spring_reply_to=null, x-myproduct-metadata-id=olsen}; Exchange:xml-request-delivery; RoutingKey:xml-request.number; Reply:myproduct.xmlProcessingReplyQueue; DeliveryMode:PERSISTENT; DeliveryTag:3781) 2012-05-24 15:16:51,334 [SimpleAsyncTaskExecutor-1] DEBUG org.springframework.integration.amqp.support.DefaultAmqpHeaderMapper headerName=[amqp_receivedRoutingKey] WILL NOT be mapped


Reply With Quote
