ActiveMQ简介

xiaoxiao2021-02-28  59

ActiveMQ是什么

  ActiveMQ是Apache推出的一款开源的,完全支持JMS1.1和J2EE1.4规范的JMS Provider实现的消息中间件(Message Oriented Middleware,MOM)

ActiveMQ能干什么

  最主要的功能是:实现JMS Provider,用来帮助实现高可用、高性能、可伸缩、易用和安全的企业级面向消息服务的系统

ActiveMQ的特点

  完全支持JMS1.1和J2EE 1.4规范(持久化、XA消息、事务)  支持多种传送协议: in-VM、TCP、SSL、NIO、UDP、JGroups、JXTA  可插拔的体系结构,可以灵活定制,如:消息存储方式、安全管理等  很容易和Application Server集成使用  多种语言和协议编写客户端。如:Java、C、C++、PHP  可以很容易的和Spring结合使用

消息中间件  MOM基本功能: 将信息以消息的形式,从一个应用程序传送到另一个或者多个应用程序  MOM的主要特点:    1.消息异步接受,类似于手机短信的行为,消息发送者不需要等待消息接受者的响应,减少软件多系统集成的耦合度    2.消息可靠接收,确保消息在中间件可靠保存,只有接收方收到后才删除消息,多个消息也可以组成原子事务    3.消息中间件的主要应用场景:      在多个系统间进行整合和通讯的时候,通常会要求:        a.可靠传输,数据不能丢失,有的时候,也会要求不能重复传输。        b.异步传输,否则各个系统同步发送接受数据,互相等待,造成系统瓶颈。

ActiveMQ安装和基本使用1.下载并安装ActiveMQ服务器端,从http://activemq.apache.org/download.html下载最新的ActiveMQ,解压后就可以直接使用2.运行启动  a.普通启动,到ActiveMQ/bin目录下面,执行 ./activemq start  b.启动并指定日志文件: ./activemq start > /tmp/activemq.log3.检查是否已经启动  ActiveMQ默认采用61616端口提供JMS服务,使用8161端口提供管理控制台服务,执行以下命令以便检查是否已经成功启动ActiveMQ服务:    a. 比如查看61616端口是否打开: netstat -an | grep 61616    b. 直接访问ActiveMQ的管理页面: http://192.168.1.102:8161/admin/      默认的用户名和密码是 admin/admin4.关闭ActiveMQ, 可以用 ./activemq stop , 或者直接kill 线程

如果能启动ActiveMQ后,访问 http:// ip :8161/admin/ ,能够出现下面的界面 说明ActiveMQ就启动成功了。

第一个ActiveMQ程序

1.新建一个Maven项目,在pom.xml里面添加ActiveMQ的lib依赖

1 <dependency> 2 <groupId>org.apache.activemq</groupId> 3 <artifactId>activemq-all</artifactId> 4 <version>5.9.0</version> 5 </dependency> 6 7 <dependency> 8 <groupId>org.apache.xbean</groupId> 9 <artifactId>xbean-spring</artifactId> 10 <version>3.16</version> 11 </dependency>

消息发送者:

1 import javax.jms.Connection; 2 import javax.jms.ConnectionFactory; 3 import javax.jms.Destination; 4 import javax.jms.MessageProducer; 5 import javax.jms.Session; 6 import javax.jms.TextMessage; 7 8 import org.apache.activemq.ActiveMQConnectionFactory; 9 10 public class JmsSend { 11 public static void main(String[] args) throws Exception { 12 ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.1.120:61616"); 13 Connection connection = connectionFactory.createConnection(); 14 connection.start(); 15 16 Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); 17 Destination destination = session.createQueue("my-queue"); 18 19 MessageProducer producer = session.createProducer(destination); 20 for(int i = 0;i < 10;i++){ 21 TextMessage message = session.createTextMessage("message --->" + i); 22 Thread.sleep(1000); 23 //通过生产者发出消息 24 producer.send(message); 25 } 26 session.commit(); 27 session.close(); 28 connection.close(); 29 } 30 }

 运行上面的消息发送者程序后,再去访问:http:// ip :8161/admin/,会出现下面的界面:

消息接受者:

1 import javax.jms.Connection; 2 import javax.jms.ConnectionFactory; 3 import javax.jms.Destination; 4 import javax.jms.MessageConsumer; 5 import javax.jms.Session; 6 import javax.jms.TextMessage; 7 8 import org.apache.activemq.ActiveMQConnectionFactory; 9 10 public class JmsReceiver { 11 public static void main(String[] args) throws Exception { 12 ConnectionFactory cf = new ActiveMQConnectionFactory("tcp://120.76.123.81:61616"); 13 Connection connection = cf.createConnection(); 14 connection.start(); 15 16 Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE); 17 Destination destination = session.createQueue("my-queue"); 18 MessageConsumer consumer = session.createConsumer(destination); 19 int i = 0; 20 while(i < 10){ 21 i++; 22 TextMessage message = (TextMessage)consumer.receive(); 23 session.commit(); 24 System.out.println("接收到的消息是:"+message.getText()); 25 } 26 session.close(); 27 connection.close(); 28 } 29 }

 

运行程序结果:

 

再去访问:http:// ip :8161/admin/,会出现下面的界面:

转载请注明原文地址: https://www.6miu.com/read-2533499.html

最新回复(0)