<>首先要讲什么是ActiveMQ:AciveMQ是Apache出品的目前最流行,能力强劲的开源消息总线

<>主要功能:

1、 解决服务之间代码耦合
2、 使用消息队列,增加系统并发处理量

<>主要应用场景:

1、 当系统使用短信平台、邮件平台的时候。
2、 当系统使用搜索平台、缓存平台的时候。

<>总结一下就是使用MQ作为系统间数据调用的中转站

<>在Spring
Boot中集成ActiveMQ相对还是比较简单的,都不需要安装什么服务,SpringBoot内置是提供了AciveMQ的,默认使用内存的activeMQ,当然配合外置ActiveMQ
Server会更好。

<>使用外置ActiveMQ 流程:

<>首先你需要去官网下一个 ps:楼主用的是5.14.2版本的 现在官网最新版是5.15.8


安装包下载完成后解压后 就是这个样子了 (注意一定要解压到全英文路径下的包内)
<>打开你的bin目录


打开你系统对应位数的目录,熊局长的是64位的


<>双击activemq.bat启动


<>点完之后会自动弹出来doc启动,稍等一下 如果你最后跟我的一样 说明启动成功了


<>启动成功之后,在你的浏览器中访问http://localhost:8161/ 就能访问到ActiveMq的页面咯

<>点击画红线的选项,会弹出一个登陆框,账号和密码都是 admin



<>登陆成功后就是这样子了,会有两个队列,topic 和 queue队列 点进去就能查看详情,如果你在后台创建队列 这边就会实时显示 让你查看



<>要注意

ActiveMQ使用的是标准生产者和消费者模型

<>1、Queue 队列(P2P消息模型) ,生产者生产了一个消息,只能由一个消费者进行消费 :给微信好友发消息

<>2、Topic 主题/广播(Pub/Sub消息模型),生产者生产了一个消息,可以由多个消费者进行消费

<>后端:

<>在SpringBoot中整合ActiveMQ是非常简单的

1:在你的pom.xml中导入依赖
<!-- ActiveMQ的启动器 --> <dependency> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId> </dependency>
2.在application.properties中添加mq的配置
# MQ所在的服务器的地址 spring.activemq.broker-url=tcp://127.0.0.1:61616 # 是否使用内置的MQ,
true 使用; fale 不使用 spring.activemq.in-memory=false #
是否在回滚回滚消息之前停止消息传递。这意味着当启用此命令时,消息顺序不会被保留。 spring.activemq.non-blocking-redelivery
=false # 用户名 spring.activemq.password=admin # 密码 spring.activemq.user=admin
3.在你需要编写生产者和消费者的系统中都要创建你的ActiveMQConfig
package com.czxy.config; import javax.jms.Queue; import javax.jms.Topic; import
org.apache.activemq.command.ActiveMQQueue; import org.apache.activemq.command.
ActiveMQTopic; import org.springframework.context.annotation.Bean; import org.
springframework.context.annotation.Configuration; @Configuration public class
ActiveMQConfig { @Bean public Queue queue() { return new ActiveMQQueue(
"czxy.queue"); } @Bean public Topic topic() { return new ActiveMQTopic(
"czxy.topic"); } }
消息的生产者:
/** * 消息的生产者 * @author Administrator * */ @Componet @EnableScheduling public
class QueueProducer { /* * @Autowired //
也可以注入JmsTemplate,JmsMessagingTemplate对JmsTemplate进行了封装 * private
JmsMessagingTemplate jmsTemplate; // * 发送消息,destination是发送到的队列,message是待发送的消息 *
* @Scheduled(fixedDelay=3000)//每3s执行1次 public void sendMessage(Destination
destination, final String message){ jmsTemplate.convertAndSend(destination,
message); } */ @Autowired private JmsMessagingTemplate jmsMessagingTemplate;
@Autowiredprivate Queue queue; @Scheduled(fixedDelay=3000)//每3s执行1次 public void
send() { try { MapMessage mapMessage = new ActiveMQMapMessage(); mapMessage.
setString("info", "你还在睡觉"); this.jmsMessagingTemplate.convertAndSend(this.queue,
mapMessage); } catch (Exception e) { // TODO Auto-generated catch block e.
printStackTrace(); } } }
消息的消费者:
/** * 消息的消费者 * @author Administrator */ @Component public class QueueConsumer {
//使用JmsListener配置消费者监听的队列,其中Message是接收到的消息 @JmsListener(destination =
"czxy.queue") public void receiveQueue(Message message) { try { MapMessage
mapMessage= (MapMessage) message; String info = mapMessage.getString("info");
System.out.println(info); } catch (Exception e) { e.printStackTrace(); } } }
<>启动,测试,ok

<>需要注意事项

根据需要创建一个ActiveMQ的生成者,在创建生产者的项目内创建一个ActiveMQconfig在config中定义好ActiveMQ的队列名
在需要接受的地方创建一个消费者,这个消费者的名字一定要根据对应生产者config的对列名,

需要注意事项:创建消费者的监听类的时候一定要记得在类名上添加@Component注释以启动监听状态,否则是找不到消费者的客要讲的就是怎么采用外置的ActiveMQ,

<>有不太明白的地方请留言,如果这篇博客帮助到了你,请关注我,我会不定时的分享一些干货的
print_r('点个赞吧'); var_dump('点个赞吧'); NSLog(@"点个赞吧!"); System.out.println("点个赞吧!")
; console.log("点个赞吧!"); print("点个赞吧!"); printf("点个赞吧!\n"); cout << "点个赞吧!" <<
endl; Console.WriteLine("点个赞吧!"); fmt.Println("点个赞吧!"); Response.Write("点个赞吧");
alert(’点个赞吧’) echo(’点个赞吧’)

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信