Spring Boot ActiveMQ
mq配置项
spring.activemq.broker-url=tcp://127.0.0.1:61616
配置containerFactory
@Configuration
public class MqConfiguration {
@Bean
public JmsListenerContainerFactory<?> jmsContainerFactory(ConnectionFactory connectionFactory) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(connectionFactory);
factory.setSubscriptionDurable(true);
factory.setClientId("clientId");
return factory;
}
}
@Component
@Slf4j
@SuppressWarnings("unused")
public class Receiver extends MessageReceiver {
@JmsListener(destination = ReceiveMqTopicName.USER, containerFactory = "jmsContainerFactory")
protected void receive(String json) {
log.info("[{}]接收消息:{}", ReceiveMqTopicName.USER, json);
super.receive(json);
}
}
监听Queue类型的消息,不需要指定containerFactory 监听Topic消息时,需要指定containerFactory,通过containerFactory指定clientId
如果启动两个消费者,并且指定相同的clientId时,需要使用DefaultJmsListenerContainerFactory。 如果使用SimpleJmsListenerContainerFactory,启动会出错。