博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一、ActiveMQ--起手问题记录
阅读量:5874 次
发布时间:2019-06-19

本文共 2325 字,大约阅读时间需要 7 分钟。

hot3.png

引言

    activeMQ是非常流行的消息中间件,最近在下载完后遇到几个问题,觉得有必要写这篇博文作为记录整个起手的过程。

问题描述

    1、下载完activeMQ后,打开bin目录下的activeMQ.bat,无论怎么点击都会闪退?

    2、http://localhost:8161/admin   这个地址的用户名和密码如何设置?

问题解决

    1、 后面咨询了下大佬,才发现问题很低级,就是其实activeMQ在window下跑是会分32位和64位的,我的电脑系统是64位的windows,需要点击64文件夹下面的activeMQ.bat,ok开启后控制台界面是下面这样的了:

 

 

 

 

 

 

 

 

    2、在 mq安装目录/conf/jetty.xml中,开启权限控制

同时在/conf/jetty-realm.properties添加用户

启动

    解决了上面问题以后就可以开始开心的玩耍了,首先启动mq客户端,然后登陆消息管理页面,默认是在8161这个端口上,点击消息代理管理连接:

a90413c536a042c8ed9659ab2121580400b.jpg

    会提示你输入用户名和密码,就是上面问题2中设置的:

7006d77add1873763b73dc8fb5f8ff58f00.jpg

    输入以后,就会跳转到管理页面,具体可以自行点击体验:

ba6f58de0d48ee639c4b914398585566d4c.jpg

    比如进入消息队列页面,可以看到列表页有一个名为的消息队列,还有该队列的待消费消息数量,消费消息数量,入列消息数量,出列消息数量等信息。

这边的操作列还提供了手动发送消息的功能:

336a10945ee460cfebb38ed76c33ef53449.jpg

    点击发送以后,在开启的消费端可以收到下面的消息:

55e8b88b5ffb4f68a0526195d7adcf6c11e.jpg

    考虑到宕机问题,我们一般需要对发送的消息进行持久化,

producer = session.createProducer(destination);producer.setDeliveryMode(DeliveryMode.PERSISTENT); //设置消息持久化sendMsg(session,producer);session.commit();

    持久化带来的好处就是,宕机重启好,消息不会丢失,宕机前未消费的消息,可以在重启后,重新消费。

    持久化存放的地址在apache-activemq\conf\activemq.xml在越80行会发现默认的配置项:

        
           
       

    上面默认使用的是kahaDB,是一个基于文件支持事务的消息存储器,是一个可靠,高性能,可扩展的消息存储器,当然我们还可以使用mysql等数据库作为持久化目的地,具体配置(在activeMQ.xml)和web项目中配置数据源一模一样(需要下载mysql-connector包到activeMQ的lib包下)。

    上面说的是点对点方式的持久化,对于订阅和消费模式,其实也有持久化的问题,持续订阅和非持续订阅,是针对“订阅-发布”模式的细分处理策略,在JMS规范中的标准称呼是:Durable-Subscribers和Non-Durable Subscribers。

    Durable-Subscribers:是指在“订阅-发布”模式下,即使标记为Durable-Subscribers的订阅者下线了(可能是因为订阅者宕机,也可能是因为这个订阅者故意下线),“订阅-发布”模式的Topic队列也要保存这些消息(视消息不同的持久化策略影响,保存机制不一样),直到下次这个被标记为Durable-Subscribers的订阅者重新上线,并正确处理这条消息为止。换句话说,标记为Durable-Subscribers的订阅者是否能获得某条消息,和它是否曾经下线没有任何关系。
    Non-Durable Subscribers:是指在“订阅-发布”模式下,“订阅-发布”模式的Topic队列不用为这些已经下线的订阅者保留消息。当后者将消息按照既定的广播规则发送给当前在线的订阅者后,消息就可以被标记为“处理完成”。

    具体在操作的是如下:

// 创建持久订阅的时候,必须要设置client,否则会报错:  // 如果clientID重复(已经存在相同id的活动连接),会报错  // javax.jms.InvalidClientIDException: Broker: localhost - Client: 1  // already connected from tcp://127.0.0.1:2758  connection.setClientID("1");    TopicSession session = connection.createTopicSession(false,Session.AUTO_ACKNOWLEDGE);  // 在同一个连接的ClientID下,持久订阅者的名称必须唯一  // javax.jms.JMSException: Durable consumer is in use for client: 1 and  // subscriptionName: 11         TopicSubscriber subscriber = session.createDurableSubscriber(topic,"11");

总结

    其实activeMQ其实还是挺简单的,api也很简洁,从目前来看activeMQ支持的五种消息类型来说(消息类型JMS规范中的消息类型包括TextMessage、MapMessage、ObjectMessage、BytesMessage、和StreamMessage),可做的事情非常多,可以多尝试下,下一篇大概介绍一下activeMQ的应用场景。

转载于:https://my.oschina.net/u/3470849/blog/1823122

你可能感兴趣的文章
2016中国大数据应用大会将于7月召开
查看>>
高德地图上线全国最全小客车、货车限行提醒功能
查看>>
网康慧眼云发现企业网络中的XcodeGhost失陷手机
查看>>
同济吴志强:可持续发展的智慧同济校园
查看>>
网络安全老兵座谈:云安全审计(评估)应该怎么做?
查看>>
虚拟化能够满足将来的存储系统的需求
查看>>
关于weblogic配置pg和sqlserver数据源的注意事项
查看>>
从搬运工做起 动视云让游戏不再受终端束缚
查看>>
IBM系列企业云计算产品和服务正式亮相
查看>>
揭秘Pure Storage即将推出的高端阵列
查看>>
XSS Trap—XSS DNS防护的简单尝试
查看>>
TensorFlow的开源与Hadoop的开源有什么不同?
查看>>
Android使用ViewStub提高布局性能
查看>>
不玩手机的步步高玩大数据:一条短信让你多买一只澳洲大龙虾
查看>>
技术团队负责人应该具备怎样的能力
查看>>
OTT IPTV商机广阔 运营商如何进一步发掘CDN机会窗口
查看>>
使用软件定义的架构 打好IT基础
查看>>
“数”领教育山东师范大学与新华三集团开启大数据战略合作
查看>>
当一个大数据团队加入存储公司之后会发生什么?
查看>>
攻击更多更厉害 美国将提高大银行网络安全标准
查看>>