springboot操作activemq
引入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
<version>1.5.0.RELEASE</version>
</dependency>
<!--消息队列连接池-->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>5.15.0</version>
</dependency>
配置:
/MQ configuration class @Configuration public class MqConfig { @Bean public Queue queue(){ return new ActiveMQQueue("mvp.queue"); } @Bean public Topic topic(){ return new ActiveMQTopic("mvp.topic"); } @Bean public ActiveMQConnectionFactory connectionFactory() { return new ActiveMQConnectionFactory("admin", "admin", "tcp://localhost:61616"); } @Bean public JmsListenerContainerFactory<?> jmsListenerContainerTopic(ActiveMQConnectionFactory connectionFactory) { DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory(); bean.setPubSubDomain(true); bean.setConnectionFactory(connectionFactory); return bean; } @Bean public JmsListenerContainerFactory<?> jmsListenerContainerQueue(ActiveMQConnectionFactory connectionFactory) { DefaultJmsListenerContainerFactory bean = new DefaultJmsListenerContainerFactory(); bean.setConnectionFactory(connectionFactory); return bean; } @Bean public JmsMessagingTemplate jmsMessagingTemplate(ActiveMQConnectionFactory connectionFactory){ return new JmsMessagingTemplate(connectionFactory); } }
生产者:
@Component @EnableScheduling public class producer { @Autowired private JmsMessagingTemplate jmsMessagingTemplate; @Autowired private Queue queue; @Autowired private Topic topic; private static int count= 0; @Scheduled(fixedDelay=3000) public void send(){ this.jmsMessagingTemplate.convertAndSend(this.queue,"hi.activeMQ,index="+count); this.jmsMessagingTemplate.convertAndSend(this.topic,"hi,activeMQ( topic ),index="+count++); } }
消费者:
@Component public class consumerqueue { @JmsListener(destination = "mvp.topic",containerFactory="jmsListenerContainerTopic") public void receiveTopic(String text){ System.out.println("Topic Consumer1:"+text); } @JmsListener(destination = "mvp.topic",containerFactory="jmsListenerContainerTopic") public void receiveTopic2(String text){ System.out.println("Topic Consumer2:"+text); } @JmsListener(destination = "mvp.queue",containerFactory="jmsListenerContainerQueue") public void reviceQueue(String text){ System.out.println("Queue Consumer:"+text); } }
或者这样配置
import org.apache.activemq.ActiveMQConnectionFactory; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.jms.config.DefaultJmsListenerContainerFactory; import org.springframework.jms.config.JmsListenerContainerFactory; import org.springframework.jms.core.JmsTemplate; import org.springframework.stereotype.Service; import javax.jms.ConnectionFactory; import javax.jms.DeliveryMode; @Configuration public class SendActivemqConfig { @Bean(name = "send_connection_factory") public ActiveMQConnectionFactory getSendConnectionFactory() { return new ActiveMQConnectionFactory(user, password, brokerUrl); } @Bean(name = "send_topic_factory") public JmsListenerContainerFactory getJmsListenerContainerTopic( @Qualifier("send_connection_factory") ConnectionFactory connectionFactory) { DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); factory.setConnectionFactory(connectionFactory); factory.setPubSubDomain(true); return factory; } @Bean(name = "send_topic_template") public JmsTemplate getJmsTemplateTopic( @Qualifier("send_connection_factory") ConnectionFactory connectionFactory) { JmsTemplate jmsTemplate = new JmsTemplate(); jmsTemplate.setConnectionFactory(connectionFactory); jmsTemplate.setPubSubDomain(true); jmsTemplate.setExplicitQosEnabled(true); jmsTemplate.setDeliveryMode(DeliveryMode.PERSISTENT); return jmsTemplate; } @Bean(name = "send_queue_template") public JmsTemplate getJmsTemplateQueue( @Qualifier("send_connection_factory") ConnectionFactory connectionFactory) { JmsTemplate jmsTemplate = new JmsTemplate(); jmsTemplate.setConnectionFactory(connectionFactory); return jmsTemplate; } }
转载于:https://segmentfault.com/a/1190000011190467

浙公网安备 33010602011771号