Springboot2 整合activeMQ

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

下载后解压,进入bin文件夹
在这里插入图片描述
根据windows系统的位数,进入win32或win64, 本机系统是64位,选择win64
在这里插入图片描述
双击activemq.bat
在这里插入图片描述
启动成功!
访问:http://localhost:8161/admin/ 登录用户/密码默认是admin/admin
在这里插入图片描述

代码:

	<!-- 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);
    }
}

测试:
在这里插入图片描述

在这里插入图片描述

参考:https://blog.youkuaiyun.com/ansellyy/article/details/81044320
https://blog.youkuaiyun.com/lemonTree_DXP/article/details/81334812
https://www.jianshu.com/p/8b9bfe865e38

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值