ActiveMQ 实践之路Word文件下载.docx
- 文档编号:19271161
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:20
- 大小:28.97KB
ActiveMQ 实践之路Word文件下载.docx
《ActiveMQ 实践之路Word文件下载.docx》由会员分享,可在线阅读,更多相关《ActiveMQ 实践之路Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。
二.ActiveMQ的竞争者
1.其他开源JMSprovider(资料来自java-):
jbossmq(jboss4)
jbossmessaging(jboss5)
joram-4.3.21
2006-09-22
openjms-0.7.7-alpha-3.zipDecember26,2005
mantamq官网暂时无法访问
ubermq
官网暂时无法访问
SomnifugiJMS
2005-7-27
开源的JMSProvider大部分都已经停止发展了,剩下的几个都是找到了东家,和某种J2EE服务器挂钩,
比如jbossmq与jboss,joram与jonas(objectweb组织),ActiveMQ与Geronimo(ASFAPACHE基金组织),
而在这3个之间,从网络底层来看,只有ActiveMQ使用了NIO,单从这个角度来看ActiveMQ在性能上会有
一定的优势
2.商业JMSprovider
IBMWebSphereMQ
BEAWebLogicJMS
OracleAQ
NonStopServerforJavaMessageService(JMS)
SunJavaSystemMessageQueue
Sonicjms
TIBCOEnterpriseForJMS
iLinkMQ(国内)
现在的商业J2EE应用服务器大部分都会有JMSProvider的实现,毕竟应用服务器都已经花费不薄,也不在乎
在里面送一个JMSProvider了,当然还是有独立的比如IBMWebSphereMQ,SonicJMS,前者肯定是商用MQ
(这个概念不仅仅是JMSProvier了,只能说JMS只是它提供的一个应用)中间的巨无霸了。
从这点来看,ActiveMQ明显的竞争者并不多,因为它是作为独立的开源JMSProvider出现的,很容易被用于多种结构设计中,
使用ActiveMQ作为默认JMSProvider的开源项目有ServiceMix,Geronimo.
(待续)
P.S
Monday,February5,2007
ApacheActiveMQgraduatesfromtheincubator
ApacheActiveMQhasnowgraduatedtobecomeatoplevelproject(TLP)atApache!
Itsnewsiteisnowhostedathttp:
//activemq.apache.org/.ManythankstoallthoseintheIncubatorandActiveMQcommunitiesformakingthishappen!
作者cctvx1
关键字:
ActiveMQ,实践
一.安装ActiveMQ
首先去http:
//activemq.apache.org/download.html下载最新版本4.1.0release(http:
//activemq.apache.org/activemq-410-release.html),
解压apache-activemq-4.1-incubator.zip(或者apache-activemq-4.1-incubator.tar.gz)目录如下:
+bin
(windows下面的bat和unix/linux下面的sh)
+conf
(activeMQ配置目录,包含最基本的activeMQ配置文件)
+data
(默认是空的)
+docs
(index,replease版本里面没有文档,-.-b不知道为啥不带)
+example
(几个例子
+lib
(activemMQ使用到的lib)
-apache-activemq-4.1-incubator.jar
(ActiveMQ的binary)
-LICENSE.txt
-NOTICE.txt
-README.txt
-user-guide.html
你可以使用bin\activemq.bat(activemq)启动,如果一切顺利,你就会看见类似下面的信息
(细节可能不一样,比如路径,或者jmx,jdbc信息)
ACTIVEMQ_HOME:
D:
\java\framework_and_lib\activemq\apache-activemq-4.1-incubator\
bin\..
Loadingmessagebrokerfrom:
xbean:
activemq.xml
INFO
BrokerService
-ActiveMQnullJMSMessageBroker(localho
st)isstarting
-Forhelpormoreinformationpleasesee:
http:
//incubator.apache.org/activemq/
ManagementContext
-JMXconsolescanconnecttoservice:
jmx:
r
mi:
///jndi/rmi:
//localhost:
1099/jmxrmi
JDBCPersistenceAdapter
-Databasedriverrecognized:
[apache_derby
_embedded_jdbc_driver]
DefaultDatabaseLocker
-Attemptingtoacquiretheexclusivelock
tobecometheMasterbroker
-BecomingthemasterondataSource:
org.ap
ache.derby.jdbc.EmbeddedDataSource@1d840cd
JournalPersistenceAdapter
-JournalRecoveryStartedfrom:
ActiveJou
rnal:
using5x20.0Megsat:
\java\framework_and_lib\activemq\apache-activemq
-4.1-incubator\activemq-data\journal
-JournalRecovered:
0message(s)intransa
ctionsrecovered.
TransportServerThreadSupport
-Listeningforconnectionsat:
tcp:
//P-SUW
EI:
61616
WARN
MulticastDiscoveryAgent
-brokerNamenotset
TransportConnector
-ConnectordefaultStarted
stomp:
//P-S
UWEI:
61613
-ConnectorstompStarted
NetworkConnector
-NetworkConnectordefaultStarted
-ActiveMQJMSMessageBroker(localhost,I
D:
P-SUWEI-1207-1170916242296-1:
0)started
*。
几个小提示
1.这个仅仅是最基础的ActiveMQ的配置,很多地方都没有配置因此不要直接使用这个配置用于生产系统
2.有的时候由于端口被占用,导致ActiveMQ错误,ActiveMQ可能需要以下端口1099(JMX),61616(默认的TransportConnector)
3.如果没有物理网卡,或者MS的LoopBackAdpaterMulticast会报一个错误
二.测试你的ActiveMQ
由于ActiveMQ是一个独立的jmsprovider,所以我们不需要其他任何第三方服务器就可以马上做我们的测试了.编译
example目录下面的程序
ProducerTool/ConsumerTool是JMS参考里面提到的典型应用,Producer产生消息,Consumer消费消息
而且这个例子还可以加入参数帮助你测试刚才启动的本地ActiveMQ或者是远程的ActiveMQ
ProducerTool[url]broker的地址,默认的是tcp:
61616
[true|flase]是否使用topic,默认是false
[subject]subject的名字,默认是TOOL.DEFAULT
[durabl]是否持久化消息,默认是false
[messagecount]发送消息数量,默认是10
[messagesize]消息长度,默认是255
[clientID]durable为true的时候,需要配置clientID
[timeToLive]消息存活时间
[sleepTime]发送消息中间的休眠时间
[transacte]
是否采用事务
ConsumerTool[url]broker的地址,默认的是tcp:
[maxiumMessages]接受最大消息数量,0表示不限制
[sleepTime]
接受消息中间的休眠时间,默认是0,onMeesage方法不休眠
[receiveTimeOut]接受超时
我们这样可以使用:
java-classpath.\apache-activemq-4.1-incubator.jar;
example\binProducerTool
//192.168.3.142:
61616test.mysubject
example\binConsumerTool
当然你可以使用上面的参数进行更复杂的测试,持久,事务
如果出现下面的信息,恭喜你,你的ActiveMQ已经能够工作了
ConnectingtoURL:
PublishingaMessagewithsize255toqueue:
TOOL.DEFAULT
Usingnon-durablepublishing
Sleepingbetweenpublish0ms
Sendingmessage:
Message:
0sentat:
ThuFeb0815:
05:
34CST2007
...
1sentat:
。
。
Consumingqueue:
test.mysubject
Usingnon-durablesubscription
Received:
ThuFeb0814:
51:
三.小结
我们已经下载,启动,并且用程序测试了我们的ActiveMQ,而后面将在这个能跑得ActiveMQ进一步的走下去,一步一步展示ActiveMQ的高级特性。
ActiveMQ实践之路
(二)使用Queue或者Topic发送/接受消息
ActiveMQ
本篇主要讲解在未使用其他框架(Spring)整合情况下,独立基于ActiveMQ,使用JMS规范进行消息通信。
一.JMS回顾
因为ActiveMQ是一个JMSProvider的实现,因此在开始实作前,有必要复习下JMS的基础知识
JavaMessageService(JMS)是sun提出来的为J2EE提供企业消息处理的一套规范,JMS目前有2套规范还在使用JMS1.0.2b和1.1.1.1已经成为主流的JMSProvider事实上的标准了.
*1.1主要在session上面有一些重要改变,比如支持建立同一session上的transaction,让他支持同时发送P2P(Queue)消息和接受
Topic消息。
在JMS中间主要定义了2种消息模式Point-to-Point(点对点),Publich/SubscribeModel(发布/订阅者),
其中在Publich/Subscribe模式下又有Nondurablesubscription和durablesubscription(持久化订阅)2种消息处理方式。
下面是JMS规范基本的接口和实现
JMSCommonInterfacsePTP-SpecificInterface
Pub/Sub-specificinterfaces
ConnectionFactory
QueueConnectionFactory
TopicConnectionFactory
Connection
QueueConnection
TopicConnection
Destination
Queue
Topic
Session
QueueSession
TopiSession
MessageProducer
QueueSender
TopicPublisher
MessageConsumer
QueueReceiver/QueueBrwerTopicSubscriber
二.使用Queue
下面以ActiveMQexample的代码为主进行说明
1.使用ActiveMQ的Connection,ConnectionFactory建立连接,注意这里没有用到pool
java代码
1.import
org.apache.activemq.ActiveMQConnection
2.import
org.apache.activemq.ActiveMQConnectionFactory
//建立Connection
1.protected
Connection
createConnection()
throws
JMSException,
Exception
{
2.
ActiveMQConnectionFactory
connectionFactory
=
new
ActiveMQConnectionFactory(user,
pwd,
url);
3.
connection
connectionFactory.createConnection();
4.
if
(durable
&
clientID!
=null)
5.
connection.setClientID(clientID);
6.
}
7.
connection.start();
8.
return
connection;
9.
}
//建立Session
Session
createSession(Connection
connection)
session
connection.createSession(transacted,
ackMode);
session;
2。
发送消息的代码
//建立QueueSession
MessageProducer
createProducer(Session
session)
JMSException
Destincation
destination
session.createQueue("
queue.hello"
);
producer
session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ActiveMQ 实践之路 实践