ActiveMQ是什么是干什么用的

ActiveMQ是什么是干什么用的,第1张

1、ActiviMq消息队列,解决了服务解耦合的动作,缓解了服务并发量很大,造成服务器无法处理的状况。(kafka、rabbitMQ、activiMQ)

其他作用:异步处理、消息通讯、流量消峰、应用解耦

应用场景:

1、用户注册的时候,重点内容是将用户信息保存到数据库中,发短信验证或者是发邮件增加了业务的复杂度。这时使用MQ将发短信、发邮件通知MQ由另外的服务平台完成。

2、搜索平台、缓存平台

查询数据,建立缓存、索引,不从数据库查询,从缓存或者索引库查询,当数据库发生增加、修改、删除操作时发消息给MQ,缓存平台或者是索引平台从MQ获取到这个消息,更新缓存或者索引。

ActiveMQ使用的是标准的生产者(完成生产消息并发送消息)和消费者(获取消息,完成自己的业务逻辑)模型

有两种数据结构

Topic(发布订阅) 一个生产者对应多个消费者,消息默认不会持久化,需要手动配置持久化。如果A服务器挂了,再生产一条消息的话,会被B服务器拿去使用,就算重新启动,A服务器也不会再拿到消息了

商品系统、库存系统、生成商品详情页面的系统,现在要添加一个商品信息,消息肯定是需要让库存系统以及商品信息详情页面系统知道的。

Queue(点对点)一个生产者对应一个消费者,默认消息持久化

StringMessage

mapMessage

byteMessage

objectMessage

要完成topic模式的消息持久化,需要保证每个消费者有唯一的clientID(本文来自北大青鸟)

步骤如下:

1、把整个conf文件夹复制一份,比如叫conf2

2、修改里面的activemq.xml文件

①brokerName不能和原来的重复

②数据存放的文件名称不能重复,比如<kahaDB directory = "${activemq.data}/kahadb2"/>

③所有涉及的transportConnector的端口,都要和原来的不一样。注意不要超出端口的范围(0-65535)

3、修改jetty.xml,把里面的默认端口号8161改成别的,不如9161

4、到bin下面,复制一个activemq,比如叫activemq2

①修改程序的id,不能和原来的重复,ACTIVEMQ_PIDFILE="$ACTIVEMQ_DATA/activemq2.pid"

②修改配置文件路径ACTIVEMQ_CONF="$ACTIVEMQ_BASE/conf2"

③修改端口,tcp://localhost:61616把61616改成和activemq.xml里面的tcp端口一致。请注意,在activemq5.9.0版本中是这么修改。但我使用的是最新的5.12.1版本,在activemq中找不到该tcp端口的配置,折腾了半天才发现该版本把这个配置挪到了env文件。所以就需要拷贝一份env,比如就叫env2吧,然后再env2里面把61616改成和activemq.xml里面的tcp端口一致。最后别忘了把activemq2里面对env的引用改成env2。ACTIVEMQ_CONFIGS="/etc/default/activemq $HOME/.activemqrc $ACTIVEMQ_HOME/bin/env2"

现在你可以到activemq的bin目录下分别执行./activemq start 和 ./activemq2 start 了。这两个broker服务应该能正常启动了。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/199935.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-02
下一篇2023-04-02

发表评论

登录后才能评论

评论列表(0条)

    保存