1、3. ActiveMQ 的特性 多种语言和协议编写客户端。语言: Java、C、C+、C#、Ruby、Perl、Python、PHP。应用协议:OpenWire、Stomp REST、WS Notification、XMPP、AMQP 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务) 对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性 通过了常见J2EE服务器(如 Geronimo、JBoss 4、GlassFish、WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配
2、置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上 支持多种传送协议:in-VM、TCP、SSL、NIO、UDP、JGroups、JXTA 支持通过JDBC和journal提供高速的消息持久化 从设计上保证了高性能的集群,客户端-服务器,点对点 支持Ajax 支持与Axis的整合 可以很容易得调用内嵌JMS provider,进行测试二、 ActiveMQ 安装和下载4. 安装 在http:/activemq.apache.org/download.html 下载5.4.0发行包,解压到需要安装ActiveMQ的文件夹,记为/path/to/activemq。 u
3、nix环境activemq文件夹需要执行权限,执行如下命令 chmod -R 755 /path/to/activemq5. 启动 window环境运行/path/to/activemq/bin/activemq.bat unix环境运行/path/to/activemq/bin/activemq 6. 测试ActiveMQ默认使用的TCP连接端口是61616, 通过查看该端口的信息可以测试ActiveMQ是否成功启动 window环境运行 netstat -an|find 61616 unix环境运行netstat -an|grep 61616 7. 监控ActiveMQ5.0版本默认启动时
4、,启动了内置的jetty服务器,提供一个demo应用和用于监控ActiveMQ的admin应用。admin:http:/127.0.0.1:8161/admin/ demo:8161/demo/三、 ActiveMQ基础实例8. 消息生产者/通过 用户密码URL 创建接口工厂 ConnectionFactory factory = new ActiveMQConnectionFactory( ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, tcp:/localhost:); /通过连接工厂创建一个新的连
5、接 Connection connection = factory.createConnection(); /通过连接接口创建一个回话Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); /根据回话接口创建有关的目标接口 Destination destination = session.createQueue(Mr Yan /回话接口再根据目标接口创建一个消息生产者接口MessageProducer messageProducer = session.createProducer(destin
6、ation); /调用回话创建一个文本消息Message message = session.createTextMessage(I am very happy either. /使用消息生产者接口将消息传送至 ActiveMQ 服务器 messageProducer.send(message); session.close(); connection.close();9. 消息消费者/ 通过username,password,url创建连接工厂接口 ActiveMQConnectionFactory.DEFAULT_USER, ActiveMQConnectionFactory.DEFAUL
7、T_PASSWORD, / 通过连接工厂创建一个新的连接接口 connection.start(); / 通过连接接口创建一个会话接口 Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); / 会话接口创建有关主题的目标接口Mr Liu / 会话接口再根据目标接口来创建一个消息消费者接口 MessageConsumer consumer = session.createConsumer(destination); / 消息消费者接收消息 TextMessage message = (TextMe
8、ssage)consumer.receive(); if (message != null) System.out.println(收到的消息: + message.getText(); 10. 消息发送流程然后调用发布接口发布消息,发布过程如下:11. 消息接收流程四、 JMS 简介12. JMS 中的概念 JMS客户端:接收或发送消息的java系统 JMS消息体:系统间发送的消息体 JMS提供商:JMS规范实现厂商 JMS管理对象:预先配置好的用于JMS客户端的JMS对象。如ConnectionFactory跟JMS服务端的连接工厂,Destination 接收和发送消息的目标地址等 JM
9、S Domain:JMS定义了两种域模型,一种是PTP(point-to-point)即点对点消息传输模型,一种是pub/sub(publish-subscribe)即发布订阅模型。PTP通过一个先进先出的queue实现。很多人在这个PTP概念上有所误解,所谓点对点不是指生产者和消费者只有一个。PTP如下图所示: 我们可以看到,一个或多个生产者发送消息,消息m2先抵达了queue,然后m1也发出了,并一同存在于一个先进先出的queue里面。消费者也存在一个或多个,对queue里的消息进行消费。但消息被随机的一个消费者消费且仅消费一次。在pub/sub消息模型中,消息被广播给所有订阅者。如下图:
10、13. JMS 接口JMS通用接口JMS PTP接口JMS pub/sub 接口描述ConnectionFactoryQueueConnectionFactoryTopicConnectionFactory创建与JMS服务的连接ConnectionQueueConnectionTopicConnectionJMS服务的连接,可创建SessionDestinationQueueTopic发送接收消息的目标,Queue和Topic均可视为一种DestinationSessionQueueSessionTopicSessionMessageProducerQueueSenderTopicPublisher消息发送者MessageConsumerQueueReceiver、QueueBrowserTopicSubscriber消息接收者/浏览者/订阅者14. JMS 接口关系图
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1