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,启动会出错。

results matching ""

    No results matching ""