32.1.5 接收消息
当JMS基础设施能够使用时,任何bean都能够被@JmsListener
注解,以创建一个监听者端点。如果没有定义JmsListenerContainerFactory
,将自动配置一个默认的。如果定义了一个DestinationResolver
或MessageConverter
bean,它将自动关联该默认factory。
默认factory是事务性的,如果运行的设施出现JtaTransactionManager
,它默认将关联到监听器容器。如果没有,sessionTransacted
标记将启用。在后一场景中,你可以通过在监听器方法上添加@Transactional
,以本地数据存储事务处理接收的消息,这可以确保接收的消息在本地事务完成后只确认一次。
下面的组件创建了一个以someQueue
为目标的监听器端点:
具体查看@EnableJms javadoc。
如果想创建多个JmsListenerContainerFactory
实例或覆盖默认实例,你可以使用Spring Boot提供的DefaultJmsListenerContainerFactoryConfigurer
,通过它可以使用跟自动配置的实例相同配置来初始化一个DefaultJmsListenerContainerFactory
。
例如,以下使用一个特殊的MessageConverter
创建另一个factory:
然后,你可以像下面那样在任何@JmsListener
注解中使用:
最后更新于