天天看点

Springboot2 整合activeMQ

ActiveMQ是Apache所提供的一个开源的消息系统,完全采用Java来实现,支持J2EE提出的JMS(Java Message Service,即Java消息服务)规范。
    
    下载ActiveMQ:https://activemq.apache.org/components/classic/download/
           

下载后解压,进入bin文件夹

Springboot2 整合activeMQ

根据windows系统的位数,进入win32或win64, 本机系统是64位,选择win64

Springboot2 整合activeMQ

双击activemq.bat

Springboot2 整合activeMQ

启动成功!

访问:http://localhost:8161/admin/ 登录用户/密码默认是admin/admin

Springboot2 整合activeMQ

代码:

<!-- activemq -->
		 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>
		 <dependency>
		     <groupId>org.apache.activemq</groupId>
		     <artifactId>activemq-pool</artifactId>
		 </dependency>
		  <dependency>
		     <groupId>org.messaginghub</groupId>
		     <artifactId>pooled-jms</artifactId>
		     <version>1.0.3</version>
		 </dependency>
	</dependencies>
           

简单案例实现activeMQ的队列和订阅模式

MQ的配置 :

@Configuration
@EnableJms // 启用jms功能
public class ActiveMqConfig {
	
	//队列模式
	 @Bean("jmsQueueListenerContainerFactory")
	    public JmsListenerContainerFactory jmsQueueListenerContainerFactory(ConnectionFactory connectionFactory) {
	        DefaultJmsListenerContainerFactory factory =
	                new DefaultJmsListenerContainerFactory();
	        factory.setConnectionFactory(connectionFactory);
	        factory.setPubSubDomain(false);  // 这里必须设置为true,false则表示是queue类型
	        return factory;

	    }

//订阅模式
	    @Bean("jmsTopicListenerContainerFactory")
	    public JmsListenerContainerFactory jmsTopicListenerContainerFactory(ConnectionFactory connectionFactory) {
	        DefaultJmsListenerContainerFactory factory =
	                new DefaultJmsListenerContainerFactory();
	        factory.setConnectionFactory(connectionFactory);
	        //重连间隔时间
	        factory.setPubSubDomain(true);
	        return factory;
	    }
}
           
@RestController
public class QueueController {
	@Autowired
	private JmsMessagingTemplate jmsTemplate;
	
	@GetMapping("/queue")
	public void jmsQueueTemplate(@RequestParam String value) {
		Destination destination = new ActiveMQQueue("queue_test");
		this.jmsTemplate.convertAndSend(destination, value);
	}

	@GetMapping("/topic")
	public void jmsTopicTemplate(@RequestParam String value) {
		Destination destination = new ActiveMQTopic("topic_test");
		this.jmsTemplate.convertAndSend(destination, value);
	}
}
           

队列监听

@Component
public class QueueReceiver {

    @JmsListener(destination = "queue_test", containerFactory = "jmsQueueListenerContainerFactory")
    public void receive(String msg) {
        System.out.println("队列监听到的消息内容为: " + msg);
    }
}
           

订阅监听

@Component
public class TopicReceiver {

    @JmsListener(destination = "topic_test", containerFactory = "jmsTopicListenerContainerFactory")
    public void receive(String msg) {
        System.out.println("topicTest1 监听到的消息内容为: " + msg);
    }

    @JmsListener(destination = "topic_test", containerFactory = "jmsTopicListenerContainerFactory")
    public void receive2(String msg) {
        System.out.println("topicTest2 监听到的消息内容为: " + msg);
    }
}
           

测试:

Springboot2 整合activeMQ
Springboot2 整合activeMQ

参考:https://blog.csdn.net/ansellyy/article/details/81044320

https://blog.csdn.net/lemonTree_DXP/article/details/81334812

https://www.jianshu.com/p/8b9bfe865e38