Spring AMQP 1.4 RC1 Released

Releases | Artem Bilan | October 23, 2014 | ...

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.

Get the Spring newsletter

Stay connected with the Spring newsletter

Subscribe

Get ahead

VMware offers training and certification to turbo-charge your progress.

Learn more

Get support

Tanzu Spring offers support and binaries for OpenJDK™, Spring, and Apache Tomcat® in one simple subscription.

Learn more

Upcoming events

Check out all the upcoming events in the Spring community.

View all