Engineering
Releases
News and Events

Spring AMQP 1.4 RC1 Released

We are pleased to announce the availability of the Release Candidate for Spring AMQP 1.4; the GA is planned to be released in early November.

First of all, thank you all who provided feedback for the milestone 1.4 M1 version and submitted reports (bugs or new features).
Special thanks to Stéphane Nicoll, who had introduced annotation-based message
listeners (@RabbitListener) and the new RabbitMessagingTemplate.

Features and fixes included in this release (changes since the milestone)

  • With the annotation-based message listener you can use the @SendTo annotation to send the result of the method as a reply message (when there’s no replyTo in the inbound message):
@RabbitListener(queues = "capitalize")
@SendTo("capitalize.reply")
public String capitalize(String s) {
	return s.toUpperCase();
}

(Annotation-basd listeners require Spring Framework 4.1.x).

  • A new RabbitMessagingTemplate has been introduced, allowing the use of the spring-messaging Message<?> abstraction as an alternative to the Spring AMQP Message (Spring Messaging Message<?> is also supported by the annotated listeners).

  • The Logback AmqpAppender is now available, with configuration similar to the existing Log4j AmqpAppender:

<appender name="AMQP" class="org.springframework.amqp.rabbit.logback.AmqpAppender">
	<layout>
		<pattern><![CDATA[ %d %p %t [%c] - <%m>%n ]]></pattern>
	</layout>
	<abbreviation>36</abbreviation>
	<applicationId>MyApplication</applicationId>
	<routingKeyPattern>%property{applicationId}.%c.%p</routingKeyPattern>
	<generateId>true</generateId>
	<charset>UTF-8</charset>
	<durable>false</durable>
	<deliveryMode>NON_PERSISTENT</deliveryMode>
</appender>
  • The RabbitTemplate can now be configured with an AbstractRoutingConnectionFactory with expression attributes to determine the target ConnectionFactory depending on the RabbitTemplate operation:
<rabbit:template connection-factory="RoutingConnectionFactory"
     send-connection-factory-selector-expression="messageProperties.userId"
     receive-connection-factory-selector-expression="#root == 'fooQueue' ? 'foo' : null"/>
  • In addition, the mandatory-expression attribute has been added to the RabbitTemplate to set the mandatory flag for each sent message:
<rabbit:template connection-factory="connectionFactory"
      mandatory-expression="messageProperties.contentType == 'application/json'"/>

(Previously, mandatory was set at the template level).

  • The AbstractRoutingConnectionFactory is now also supported for the MessageListenerContainer, where the key for
    the target ConnectionFactory is based on the configured queueNames array

See the Release Notes
and the Project Page for more information.

comments powered by Disqus