ActiveMQ入门
ActiveMQ入门实例
1.下载ActiveMQ去官方网站下载:/2.运行ActiveMQ解压缩apache-activemq-5.5.1-bin.zip,然后双击apache-activemq-5.5.1\bin\activemq.bat运行ActiveMQ程序。
启动ActiveMQ以后,登陆:http://localhost:8161/admin/,创建一个Queue,命名为FirstQueue。
3.创建Eclipse项目并运行创建project:ActiveMQ-5.5,并导入apache-activemq-5.5.1\lib目录下需要用到的jar文件,项目结构如下图所示:import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.DeliveryMode;import javax.jms.Destination;import javax.jms.MessageProducer;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnection;import org.apache.activemq.ActiveMQConnectionFactory;public class Sender {private static final int SEND_NUMBER = 5;public static void main(String[] args) {// ConnectionFactory :连接工厂,JMS 用它创建连接ConnectionFactory connectionFactory;// Connection :JMS 客户端到JMS Provider 的连接Connection connection = null;// Session:一个发送或接收消息的线程Session session;// Destination :消息的目的地;消息发送给谁.Destination destination;// MessageProducer:消息发送者MessageProducer producer;// TextMessage message;// 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jarconnectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,"tcp://localhost:61616");try {// 构造从工厂得到连接对象connection = connectionFactory.createConnection();// 启动connection.start();// 获取操作连接session = connection.createSession(Boolean.TRUE,Session.AUTO_ACKNOWLEDGE);// 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置destination = session.createQueue("FirstQueue");// 得到消息生成者【发送者】producer = session.createProducer(destination);// 设置不持久化,此处学习,实际根据项目决定producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);// 构造消息,此处写死,项目就是参数,或者方法获取sendMessage(session, producer);mit();} catch (Exception e) {e.printStackTrace();} finally {try {if (null != connection)connection.close();} catch (Throwable ignore) {}}}public static void sendMessage(Session session, MessageProducer producer) throws Exception {for (int i = 1; i <= SEND_NUMBER; i++) {TextMessage message = session.createTextMessage("ActiveMq 发送的消息" + i);// 发送消息到目的地方System.out.println("发送消息:" + "ActiveMq 发送的消息" + i);producer.send(message);}}}import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.MessageConsumer;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnection;import org.apache.activemq.ActiveMQConnectionFactory; public class Receiver {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stub// ConnectionFactory :连接工厂,JMS 用它创建连接ConnectionFactory connectionFactory;// Connection :JMS 客户端到JMS Provider 的连接Connection connection = null;// Session:一个发送或接收消息的线程Session session;// Destination :消息的目的地;消息发送给谁.Destination destination;// 消费者,消息接收者MessageConsumer consumer;connectionFactory = new ActiveMQConnectionFactory( ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,"tcp://localhost:61616");try {// 构造从工厂得到连接对象connection = connectionFactory.createConnection();// 启动connection.start();// 获取操作连接session = connection.createSession(Boolean.FALSE,Session.AUTO_ACKNOWLEDGE);// 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置destination = session.createQueue("FirstQueue");consumer = session.createConsumer(destination);while (true) {//设置接收者接收消息的时间,为了便于测试,这里谁定为100sTextMessage message = (TextMessage) consumer.receive(100000);if (null != message) {System.out.println("收到消息" + message.getText());} else {break;}}} catch (Exception e) {e.printStackTrace();} finally {try {if (null != connection)connection.close();} catch (Throwable ignore) {}}}}4.注意事项1.最后接收者跟发送者在不同的机器上测试2.项目所引用的jar最后在ActiveMQ下的lib中找,这样不会出现版本冲突。
ActiveMQ实践入门指南
ActiveMQ实践入门指南ActiveMQ实践入门指南ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。
ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。
下面我们将分四部分来介绍ActiveMQ的相关内容。
ActiveMQ实践:松耦合和ActiveMQ回到2003年,一群开源开发者聚在一起组成了Apache Geronimo。
他们发现没有一个很好的使用BSD风格许可证的消息中间件可用。
因为Geronimo需要一个JMS实现J2EE兼容性,所以一些开发者开始探讨这种可能性。
ActiveMQ实践:松耦合和ActiveMQActiveMQ实践:特性列表和安装这一部分,我们将介绍ActiveMQ的特性列表和如何进行安装和如何对其进行测试。
ActiveMQ实践:特性列表和安装ActiveMQ实践:使用场景在系统架构中,有很多场景ActiveMQ和异步消息都会产生深远的影响。
这部分中,我们将介绍一些使用ActiveMQ的场景实例。
ActiveMQ实践:使用场景ActiveMQ实践:ActiveMQ使用入门开始使用ActiveMQ并不是很难,你只需要启动代理,确保它能够接受连接和发送消息。
这部分中,我们将介绍如何开始使用ActiveMQ。
ActiveMQ实践:ActiveMQ使用入门ActiveMQ实践:松耦合和ActiveMQ回到2003年,一群开源开发者聚在一起组成了Apache Geronimo。
在这种情况下,他们发现没有一个很好的使用BSD风格许可证的消息中间件可用。
因为Geronimo需要一个JMS实现J2EE兼容性,所以一些开发者开始探讨这种可能性。
他们拥有大量的商业MOM经验,而且他们甚至之前已经创建了一些MOM,这些开发者打算创建下一代伟大的开源消息中间件。
activemq用法
activemq用法ActiveMQ是一个开源的分布式消息中间件,采用Java编写,它是Apache软件基金会的一个顶级项目。
ActiveMQ实现了Java Message Service(JMS)规范,可以在不同系统之间进行消息传递和通信。
下面将介绍ActiveMQ的用法。
1.安装与配置:2.创建队列:在ActiveMQ管理界面上,点击"Queues"选项卡,然后点击"Add a new Queue"按钮。
给队列指定一个名称,并配置其他参数,如持久性、最大消息数等。
点击"Add"按钮后,队列就会被创建。
3.发送和接收消息:ActiveMQ提供了多种编程语言的客户端库,可以方便地发送和接收消息。
以Java为例,使用JMS API可以完成这些操作。
首先,需要创建一个ConnectionFactory对象,指定ActiveMQ的连接URL。
然后,通过ConnectionFactory创建一个Connection对象,并启动连接。
接下来,创建一个Session对象,用于发送和接收消息。
最后,创建一个MessageProducer对象,通过调用它的send方法发送消息。
同样地,可以创建一个MessageConsumer对象,接收消息。
接收消息的时候,可以通过调用MessageConsumer的receive方法,阻塞等待接收消息;也可以注册一个MessageListener,通过回调方式接收消息。
具体代码如下:```javaimport javax.jms.*;public class ActiveMQExamplepublic static void main(String[] args) throws JMSException ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURL);Connection connection = connectionFactory.createConnection(;connection.start(;Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);Destination destination = session.createQueue("myQueue");MessageProducer producer =session.createProducer(destination);//发送消息TextMessage message = session.createTextMessage(;message.setText("Hello, ActiveMQ!");producer.send(message);//接收消息MessageConsumer consumer =session.createConsumer(destination);Message receivedMessage = consumer.receive(;if (receivedMessage instanceof TextMessage)String text = ((TextMessage) receivedMessage).getText(;System.out.println("Received message: " + text);}session.close(;connection.close(;}}```4.持久化与事务:ActiveMQ支持消息的持久化,保证消息在传送过程中不会丢失。
ActiveMQ应用开发指南
ActiveMQ应用开发指南ActiveMQ是一个开源的消息传递中间件,它能够通过许多协议和编程语言与各种系统集成。
作为Apache软件基金会的一个项目,ActiveMQ保证了可靠性和数据完整性,使得应用开发者更加轻松地开发分布式应用程序和服务。
1. 安装ActiveMQ要使用ActiveMQ进行应用开发,首先需要在本地计算机上安装ActiveMQ。
安装过程取决于操作系统和平台,因此应该访问ActiveMQ官方网站并从下载页面上获取适当的安装程序。
在安装过程中,应该选择默认设置以确保正确地安装ActiveMQ。
2. 使用ActiveMQActiveMQ提供了一种灵活而易于使用的API,它可以与多种开发语言集成,例如Java、C++、Python和Ruby等。
在使用ActiveMQ之前,必须先熟悉其基本概念和术语。
- Destination:消息发送和接收的地址- Producer:创建和发送消息的客户端- Consumer:接收和处理消息的客户端- Message:传递的数据单元,包含消息正文和相关元数据3. 创建ActiveMQ应用程序在使用ActiveMQ API之前,必须添加ActiveMQ类库到项目中。
这些类库在ActiveMQ安装目录的lib目录下,可以直接添加到项目中或通过构建工具来引用。
3.1 生产者创建生产者的主要任务是将数据转换为消息并将其发送到一个或多个消息目的地。
对于基于Java的应用程序而言,可以使用ActiveMQ所提供的几个类来创建一个生产者。
要创建与ActiveMQ Broker的连接并发送消息,需要以下步骤:- 创建ConnectionFactory对象- 创建Connection对象- 启动连接- 创建一个Session对象- 创建一个Destination(队列或主题)- 创建一个MessageProducer对象- 发送消息3.2 消费者对于基于Java的应用程序而言,需要使用ActiveMQ API中的许多具有各种方法和属性的类,以便从队列或主题中接收消息。
ACTIVEMQ入门教程
ActiveMQ介绍ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。
ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。
主要特点:1. 多种语言和协议编写客户端。
语言: Java, C, C++, C#, Ruby, Perl, Python, PHP。
应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP2. 完全支持JMS1.1和J2EE 1.4规范(持久化,XA消息,事务)3. 对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性4. 通过了常见J2EE服务器(如Geronimo,JBoss 4, GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上5. 支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA6. 支持通过JDBC和journal提供高速的消息持久化7. 从设计上保证了高性能的集群,客户端-服务器,点对点8. 支持Ajax9. 支持与Axis的整合10. 可以很容易得调用内嵌JMS provider,进行测试JMS介绍jms即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
JMS(Java Messaging Service)是Java平台上有关面向消息中间件的技术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发,翻译为Java消息服务。
ActiveMQ实践之路(一)启动你的ActiveMQ
ActiveMQ实践之路(一)启动你的ActiveMQ作者 cctvx1程度: 入门一.安装ActiveMQ首先去/download.html 下载最新版本4.1.0release (/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\..Loading message broker from: xbean:activemq.xmlINFO BrokerService - ActiveMQ null JMS Message Broker (localhost) is startingINFO BrokerService - For help or more information please see:/activemq/INFO ManagementContext - JMX consoles can connect to service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmiINFO JDBCPersistenceAdapter - Database driver recognized: [apache_derby_embedded_jdbc_driver]INFO DefaultDatabaseLocker - Attempting to acquire the exclusive lockto become the Master brokerINFO DefaultDatabaseLocker - Becoming the master on dataSource: org.apache.derby.jdbc.EmbeddedDataSource@1d840cdINFO JournalPersistenceAdapter - Journal Recovery Started from: Active Journal: using 5 x 20.0 Megs at: D:\java\framework_and_lib\activemq\apache-activemq -4.1-incubator\activemq-data\journalINFO JournalPersistenceAdapter - Journal Recovered: 0 message(s) in transactions recovered.INFO TransportServerThreadSupport - Listening for connections at: tcp://P-SUWEI:61616WARN MulticastDiscoveryAgent - brokerName not set INFO TransportConnector - Connector default StartedINFO TransportServerThreadSupport - Listening for connections at: stomp://P-SUWEI:61613INFO TransportConnector - Connector stomp StartedINFO NetworkConnector - Network Connector default StartedINFO BrokerService - ActiveMQ JMS Message Broker (localhost, ID:P-SUWEI-1207-1170916242296-1:0) started*。
ActiveMQ基本介绍
ActiveMQ基本介绍预览说明:预览图片所展示的格式为文档的源格式展示,下载源文件没有水印,内容可编辑和复制ActiveMQ基本介绍1、ActiveMQ服务器工作模型通过ActiveMQ消息服务交换消息。
消息生产者将消息发送至消息服务,消息消费者则从消息服务接收这些消息。
这些消息传送操作是使用一组实现 ActiveMQ应用编程接口 (API) 的对象来执行的。
ActiveMQ客户端使用 ConnectionFactory 对象创建一个连接,向消息服务发送消息以及从消息服务接收消息均是通过此连接来进行。
Connection 是客户端与消息服务的活动连接。
创建连接时,将分配通信资源以及验证客户端。
这是一个相当重要的对象,大多数客户端均使用一个连接来进行所有的消息传送。
连接用于创建会话。
Session 是一个用于生成和使用消息的单线程上下文。
它用于创建发送的生产者和接收消息的消费者,并为所发送的消息定义发送顺序。
会话通过大量确认选项或通过事务来支持可靠传送。
客户端使用MessageProducer 向指定的物理目标(在API 中表示为目标身份对象)发送消息。
生产者可指定一个默认传送模式(持久性消息与非持久性消息)、优先级和有效期值,以控制生产者向物理目标发送的所有消息。
同样,客户端使用MessageConsumer 对象从指定的物理目标(在API 中表示为目标对象)接收消息。
消费者可使用消息选择器,借助它,消息服务可以只向消费者发送与选择标准匹配的那些消息。
消费者可以支持同步或异步消息接收。
异步使用可通过向消费者注册MessageListener 来实现。
当会话线程调用 MessageListener 对象的onMessage 方法时,客户端将使用消息。
2、ActiveMQ消息传送模型ActiveMQ 支持两种截然不同的消息传送模型:PTP(即点对点模型)和Pub/Sub(即发布/订阅模型),分别称作:PTP Domain 和Pub/Sub Domain。
activeMQ学习教程
ActiveMQ学习教程背景:ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。
选择ActiveMQ作为JMS的入门学习中间件,是因为其拥有以下优点1.多种语言和协议编写客户端。
语言: Java, C, C++, C#, Ruby, Perl, Python, PHP。
应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP2.完全支持JMS1.1和J2EE 1.4规范(持久化,XA消息,事务)3.对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性4.完全支持JMS1.1和J2EE 1.4规范(持久化,XA消息,事务)5.通过了常见J2EE服务器(如Geronimo,JBoss 4, GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上6.支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA7.从设计上保证了高性能的集群,客户端-服务器,点对点8.支持Ajax9.支持与Axis的整合10.可以很容易得调用内嵌JMS provider,进行测试学会了ActiveMQ之后,其它供应商的MQ也可以在短时间内快速上手。
安装:ActiveMQ(本文简称MQ)要求JDK1.5以上,推荐1.6以上版本。
还没安装JDK的朋友,请先安装,在此不赘诉了。
安装完JDK后,从/download.html下载MQ的最新版本,本教程使用版本为5.5。
解压后,可以看到MQ目录下有以下文件和目录activemq-all-5.5.0.jar:所有MQ JAR包的集合,用于用户系统调用bin:其中包含MQ的启动脚本conf:包含MQ的所有配置文件data:日志文件及持久性消息数据example:MQ的示例lib:MQ运行所需的所有Libwebapps:MQ的Web控制台及一些相关的DEMO启动MQ:双击bin目录下的activemq.bat文件即可启动MQ第一个示例:新建一个JAVA工程,引用activemq-all-5.5.0.jar,SLFAPI其及对应版本LOG4J的JAR 包(懒的上网找的到附件里下载)Publisher.javaJava代码1import java.util.Hashtable;2import java.util.Map;34import javax.jms.Connection;5import javax.jms.ConnectionFactory;6import javax.jms.Destination;7import javax.jms.JMSException;8import javax.jms.MapMessage;9import javax.jms.Message;10import javax.jms.MessageProducer;11import javax.jms.Session;1213import org.apache.activemq.ActiveMQConnectionFactory;14import mand.ActiveMQMapMessage;1516public class Publisher {1718protected int MAX_DELTA_PERCENT = 1;19protected Map<String, Double> LAST_PRICES = new Hashtable<String, Double>();20protected static int count = 10;21protected static int total;2223protected static String brokerURL = "tcp://localhost:61616";24protected static transient ConnectionFactory factory;25protected transient Connection connection;26protected transient Session session;27protected transient MessageProducer producer;2829public Publisher() throws JMSException {30factory = new ActiveMQConnectionFactory(brokerURL);31connection = factory.createConnection();32try {33connection.start();34} catch (JMSException jmse) {35connection.close();36throw jmse;37}38session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);39producer = session.createProducer(null);40}4142public void close() throws JMSException {43if (connection != null) {44connection.close();45}46}4748public static void main(String[] args) throws JMSException {49Publisher publisher = new Publisher();50while (total < 1000) {51for (int i = 0; i < count; i++) {52publisher.sendMessage(args);53}54total += count;55System.out.println("Published '" + count + "' of '" + total + "' price56try {57Thread.sleep(1000);58} catch (InterruptedException x) {59}60}61publisher.close();62}6364protected void sendMessage(String[] stocks) throws JMSException { 65int idx = 0;66while (true) {67idx = (int)Math.round(stocks.length * Math.random());68if (idx < stocks.length) {69break;70}71}72String stock = stocks[idx];73Destination destination = session.createTopic("STOCKS." + stock); 74Message message = createStockMessage(stock, session);75System.out.println("Sending: " +((ActiveMQMapMessage)message).getContentMap() + " on destination: " +76producer.send(destination, message);77}7879protected Message createStockMessage(String stock, Session session) throws JMSException {80Double value = LAST_PRICES.get(stock);81if (value == null) {82value = new Double(Math.random() * 100);83}8485// lets mutate the value by some percentage86double oldPrice = value.doubleValue();87value = new Double(mutatePrice(oldPrice));88LAST_PRICES.put(stock, value);89double price = value.doubleValue();9091double offer = price * 1.001;9293boolean up = (price > oldPrice);9495MapMessage message = session.createMapMessage();96message.setString("stock", stock);97message.setDouble("price", price);98message.setDouble("offer", offer);99message.setBoolean("up", up);100return message;101}102103protected double mutatePrice(double price) {104double percentChange = (2 * Math.random() * MAX_DELTA_PERCENT) - MAX_DELTA_PERCENT;105106return price * (100 + percentChange) / 100;107}108109}Consumer.javaJava代码110import javax.jms.Connection;111import javax.jms.ConnectionFactory;112import javax.jms.Destination;113import javax.jms.JMSException;114import javax.jms.MessageConsumer;115import javax.jms.Session;116117import org.apache.activemq.ActiveMQConnectionFactory;118119public class Consumer {120121private static String brokerURL = "tcp://localhost:61616"; 122private static transient ConnectionFactory factory;123private transient Connection connection;124private transient Session session;125126public Consumer() throws JMSException {127factory = new ActiveMQConnectionFactory(brokerURL); 128connection = factory.createConnection();129connection.start();130session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);131}132133public void close() throws JMSException {134if (connection != null) {135connection.close();136}137}138139public static void main(String[] args) throws JMSException {140Consumer consumer = new Consumer();141for (String stock : args) {142Destination destination =consumer.getSession().createTopic("STOCKS." + stock);143MessageConsumer messageConsumer =consumer.getSession().createConsumer(destination);144messageConsumer.setMessageListener(new Listener());145}146}147148public Session getSession() {149return session;150}151152}Listener.javaJava代码153import java.text.DecimalFormat;154155import javax.jms.MapMessage;156import javax.jms.Message;157import javax.jms.MessageListener;158159public class Listener implements MessageListener {160161public void onMessage(Message message) {162try {163MapMessage map = (MapMessage)message;164String stock = map.getString("stock");165double price = map.getDouble("price");166double offer = map.getDouble("offer");167boolean up = map.getBoolean("up");168DecimalFormat df = new DecimalFormat( "#,###,###,##0.00" ); 169System.out.println(stock + "\t" + df.format(price) + "\t" +df.format(offer) + "\t" + (up?"up":"down"));170} catch (Exception e) {171 e.printStackTrace();172}173}174}先运行Consumer.java, 输入参数ORCL,然后运行Publisher.java,输入参数ORCL,就可以看到Publisher在发送消息,Consumer在接收消息了。
一、ActiveMQ学习笔记(基础概念)
⼀、ActiveMQ学习笔记(基础概念)刚准备把使⽤ActiveMQ过程中遇到的问题,以及解决⽅法整理出来的时候,去看了下官⽹,发现ActiveMQ Artemis已经发布好久了。
1、JMS概念JMS即Java消息服务(Java Message Service)应⽤程序接⼝,是⼀个Java平台中关于⾯向消息中间件(MOM)的API,⽤于在两个应⽤程序之间,或分布式系统中发送消息,进⾏异步通信。
JMS是⼀种与⼚商⽆关的 API,绝⼤多数MOM提供商都对JMS提供⽀持,⽤来访问收发系统消息,它类似于JDBC(Java Database Connectivity)。
2、JMS元素提供者(Provider):实现JMS的消息服务中间件服务器。
常⽤的如:Apache ActiveMQ、IBM WebSphere MQ。
客户端:发送或接受消息的应⽤。
⽣产者(Producer):创建并发送消息的JMS客户。
消费者(Consumer):接收并处理消息的JMS客户。
消息(Message):应⽤程序之间传递的数据。
队列(Queue):⼀个容纳那些被发送的等待阅读的消息的区域。
与队列名字所暗⽰的意思不同,消息的接受顺序并不⼀定要与消息的发送顺序相同。
⼀旦⼀个消息被阅读,该消息将被从队列中移⾛。
主题(Topic):⼀种⽀持发送消息给多个订阅者的机制。
3、JMS对象连接⼯⼚(ConnectionFactory):创建Connection对象的⼯⼚。
客户端使⽤JNDI查找连接⼯⼚,然后利⽤连接⼯⼚创建⼀个JMS连接。
连接(Connection):客户端和服务器端之间的⼀个活动的连接,是由客户端通过调⽤连接⼯⼚的⽅法建⽴的。
会话(Session):表⽰客户与服务器之间的会话状态。
会话建⽴在连接上,表⽰客户与服务器之间的⼀个会话线程。
⽬的(Destination):消息⽣产者的消息发送⽬标或者说消息消费者的消息来源。
⽣产者(Message Producer):消息⽣产者由Session创建,并⽤于将消息发送到Destination。
activeMQ操作手册
一、安装部署1、下载,下载0.0 Windows Distribution版本2、安装直接解压至任意目录(如:)3、启动 ActiveMQ效劳cmd到bin目录下直接运行: start启动成功:4、ActiveMQ消息治理后台系统:localhost:8161/admin(随包附带jetty、可直接启动)默许用户名:admin默许密码:admin※在conf/jetty-里能够修改用户和密码创建一个Queue二、Queue与 Topic 的比较1、JMS Queue 执行 load balancer语义:一条消息仅能被一个 consumer(消费者) 收到。
若是在 message 发送的时候没有可用的consumer,那么它将被保留一直到能处置该 message 的 consumer 可用。
若是一个consumer 收到一条 message 后却不响应它,那么这条消息将被转到另一个consumer 那儿。
一个 Queue 能够有很多 consumer,而且在多个可用的 consumer中负载均衡。
注:点对点消息传递域的特点如下:•每一个消息只能有一个消费者。
•消息的生产者和消费者之间没有时刻上的相关性。
不管消费者在生产者发送消息的时候是不是处于运行状态,它都能够提取消息。
2、Topic 实现 publish和 subscribe 语义:一条消息被 publish时,它将发到所有感爱好的定阅者,因此0到多个subscriber将接收到消息的一个拷贝。
可是在消息代理接收到消息时,只有激活定阅的subscriber能够取得消息的一个拷贝。
注:发布/定阅消息传递域的特点如下:•每一个消息能够有多个消费者。
•生产者和消费者之间有时刻上的相关性。
定阅一个主题的消费者只能消费自它定阅以后发布的消息。
JMS 标准予诺客户创建持久定阅,这在必然程度上放松了时刻上的相关性要求。
持久定阅许诺消费者消费它在未处于激活状态时发送的消息。
消息中间件系列一:入门、JMS规范、ActiveMQ使用
消息中间件系列⼀:⼊门、JMS规范、ActiveMQ使⽤⼀、⼊门1. 消息中间件的定义没有标准定义,⼀般认为,采⽤消息传送机制/消息队列的中间件技术,进⾏数据交流,⽤在分布式系统的集成2. 为什么要⽤消息中间件解决分布式系统之间消息的传递。
电商场景:⽤户下单减库存,调⽤物流系统。
随着业务量的增⼤,需要对系统进⾏拆分(服务化和业务拆分),拆分后的系统之间的交互⼀般⽤RPC(远程过程调⽤)。
如果系统扩充到有⼏⼗个接⼝,就需要⽤消息中间件来解决问题。
3. 消息中间件和RPC有什么区别3.1 功能特点:在架构上,RPC和Message的差异点:Message有⼀个中间结点Message Queue,可以把消息存储。
3.2 消息的特点Message Queue把请求的压⼒保存⼀下,逐渐释放出来,让处理者按照⾃⼰的节奏来处理。
Message Queue引⼊⼀下新的结点,让系统的可靠性会受Message Queue结点的影响。
Message Queue是异步单向的消息。
发送消息设计成是不需要等待消息处理的完成。
所以对于有同步返回需求,⽤Message Queue则变得⿇烦了。
3.3 PRC的特点同步调⽤,对于要等待返回结果/处理结果的场景,RPC是可以⾮常⾃然直觉的使⽤⽅式。
# RPC也可以是异步调⽤。
由于等待结果,Consumer(Client)会有线程消耗。
如果以异步RPC的⽅式使⽤,Consumer(Client)线程消耗可以去掉。
但不能做到像消息⼀样暂存消息/请求,压⼒会直接传导到服务Provider。
3.4 适⽤场合说明希望同步得到结果的场合,RPC合适。
希望使⽤简单,则RPC;RPC操作基于接⼝,使⽤简单,使⽤⽅式模拟本地调⽤。
异步的⽅式编程⽐较复杂。
不希望发送端(RPC Consumer、Message Sender)受限于处理端(RPC Provider、Message Receiver)的速度时,使⽤Message Queue。
activeMQ
初识ActiveMQ消息中间件ActiveMQ是Apache的一个开源项目,它是一个能力强劲的开源消息总线,也是一个中间件产品。
它是JMS的一个实现。
在介绍ActiveMQ之前,先来复习一下J2EE中的JMS规范。
JMS是java Message Service的简称,用来发送异步消息,在不同系统和不同的模块之间我们可以利用它实现集成。
JMS有两个好处,第一个就是让模块之间或者系统之间的耦合度降低,第二个是异步通信。
JMS的消息机制有2种模型,一种是Point to Point,表现为队列的形式。
发送的消息,只能被一个接收者取走;另一种是Topic,可以被多个订阅者订阅,类似于群发。
在JMS中有这样几个重要的核心接口和类:1. ConnectionFactory,用于jms client获取与jms provider的连接。
不同的jms产品,对这个接口有不同的实现,比如说ActiveMQ,这个接口的实现类是ActiveMQConnectionFactory2. Connection,是由ConnectionFactory产生的,表示jms client与jms provider的连接3. Session,是由Connection产生的,表示一个会话。
Session是关键组件,Message、Producer/Consumer、Destination都是在Session上创建的4. Message,这个组件很好理解,就是传输的消息,里面包括head、properties、body,其中head是必选的5. Destination,是消息源,对发送者来说,就是消息发到哪里;对接收者来说,就是从哪里取消息。
Destination有2个子接口,Queue和Topic,分别对应上面提到的2种模型6. MessageProducer,是消息发送者,创建这个组件的代码类似:Java代码 :[java]Destination dest =session.createQueue("dotaQueue");// 消息目的地MessageProducer producer =session.createProducer(dest);// 消息发送者可以注意到,这里需要把Destination作为参数,传入createProducer()方法,这说明消息发送者是绑定到Destination上的,这个发送者发送的消息,会发送到这个绑定的Destination上7. MessageConsumer,是消息接收者,和Message Producer是相反的一种组件对JMD有所了解之后,我们来看ActiveMQ。
ActiveMQ学习
ActiveMQ 介绍和学习关键字: activemq1 JMS在介绍ActiveMQ之前,首先简要介绍一下JMS规范。
1.1 JMS的基本构件1.1.1 连接工厂连接工厂是客户用来创建连接的对象,例如ActiveMQ提供的ActiveMQConnectionFactory。
1.1.2 连接JMS Connection封装了客户与JMS提供者之间的一个虚拟的连接。
1.1.3 会话JMS Session是生产和消费消息的一个单线程上下文。
会话用于创建消息生产者(producer)、消息消费者(consumer)和消息(message)等。
会话提供了一个事务性的上下文,在这个上下文中,一组发送和接收被组合到了一个原子操作中。
1.1.4 目的地目的地是客户用来指定它生产的消息的目标和它消费的消息的来源的对象。
JMS1.0.2规范中定义了两种消息传递域:点对点(PTP)消息传递域和发布/订阅消息传递域。
点对点消息传递域的特点如下:• 每个消息只能有一个消费者。
• 消息的生产者和消费者之间没有时间上的相关性。
无论消费者在生产者发送消息的时候是否处于运行状态,它都可以提取消息。
发布/订阅消息传递域的特点如下:• 每个消息可以有多个消费者。
• 生产者和消费者之间有时间上的相关性。
订阅一个主题的消费者只能消费自它订阅之后发布的消息。
JMS规范允许客户创建持久订阅,这在一定程度上放松了时间上的相关性要求。
持久订阅允许消费者消费它在未处于激活状态时发送的消息。
在点对点消息传递域中,目的地被成为队列(queue);在发布/订阅消息传递域中,目的地被成为主题(topic)。
1.1.5 消息生产者消息生产者是由会话创建的一个对象,用于把消息发送到一个目的地。
1.1.6 消息消费者消息消费者是由会话创建的一个对象,它用于接收发送到目的地的消息。
消息的消费可以采用以下两种方法之一:• 同步消费。
通过调用消费者的receive方法从目的地中显式提取消息。
ActiveMQ(中文)参考手册
1 JMS在介绍Act iveMQ之前,首先简要介绍一下JMS规范。
1.1 JMS的基本构件1.1.1 连接工厂连接工厂是客户用来创建连接的对象,例如Acti veMQ提供的Act iveMQ Conne ction Facto ry。
1.1.2 连接JMS Connec tion封装了客户与JMS提供者之间的一个虚拟的连接。
1.1.3 会话JMS Sessio n是生产和消费消息的一个单线程上下文。
会话用于创建消息生产者(produc er)、消息消费者(consum er)和消息(messag e)等。
会话提供了一个事务性的上下文,在这个上下文中,一组发送和接收被组合到了一个原子操作中。
1.1.4 目的地目的地是客户用来指定它生产的消息的目标和它消费的消息的来源的对象。
JMS1.0.2规范中定义了两种消息传递域:点对点(PTP)消息传递域和发布/订阅消息传递域。
点对点消息传递域的特点如下:•每个消息只能有一个消费者。
•消息的生产者和消费者之间没有时间上的相关性。
无论消费者在生产者发送消息的时候是否处于运行状态,它都可以提取消息。
发布/订阅消息传递域的特点如下:•每个消息可以有多个消费者。
•生产者和消费者之间有时间上的相关性。
订阅一个主题的消费者只能消费自它订阅之后发布的消息。
JMS规范允许客户创建持久订阅,这在一定程度上放松了时间上的相关性要求。
持久订阅允许消费者消费它在未处于激活状态时发送的消息。
在点对点消息传递域中,目的地被成为队列(queue);在发布/订阅消息传递域中,目的地被成为主题(topic)。
1.1.5 消息生产者消息生产者是由会话创建的一个对象,用于把消息发送到一个目的地。
1.1.6 消息消费者消息消费者是由会话创建的一个对象,它用于接收发送到目的地的消息。
ActiveMQ之基础讲解篇
ActiveMQ之基础讲解篇文档编号:2020-03-09当前版本:V1.0.0编写者:海带发布时间:2020-03-09修订记录1.概述 (4)1.1ActiveMQ是什么 (4)1.2整体架构 (4)1.2.1相关概念 (4)2.P2P (5)3.Publish (6)4.代码流程 (6)5.存储方式 (7)5.1KahaDB (7)5.2AMQ (8)5.3JDBC (8)5.4内存存储 (9)6.部署模式 (9)6.1单例模式 (9)6.2无共享主从模式 (9)6.3共享存储主从模式 (11)6.3.1基于数据库 (11)6.3.2基于文件系统 (12)7.网络连接 (13)7.1代理网络 (13)7.2网络发现 (14)8.实例 (15)9.性能调优 (15)1.概述本文档为海带中间件系列之ActiveMQ基础篇,描述了ActiveMQ的基本概念、运行机制及单Broker、多Broker的使用方法。
给大家明确一点,ActiveMQ只是一种工具,安装、配置后使用即可,可以简单地集成到Spring等框架中来,就像我们使用MySql数据库一样。
1.1ActiveMQ是什么ActiveMQ是一种MOM,即消息中间件,是用于以分布式应用或系统中的异步、松耦合、可靠、可扩展和安全通信的一类软件。
MOM 的总体思想是它作为消息发送器和消息接收器之间的消息中介,这种中介提供了一个全新水平的松耦合。
JMS 叫做Java 消息服务(Java Message Service),是Java 平台上有关面向MOM 的技术规范,旨在通过提供标准的产生、发送、接收和处理消息的API 简化企业应用的开发,类似于JDBC 和关系型数据库通信方式的抽象。
1.2整体架构1.2.1相关概念●Provider:纯Java 语言编写的JMS 接口实现(如ActiveMQ )●Domains:消息传递方式,包括点对点(P2P)、发布/订阅(Pub/Sub)两种●Connection factory:客户端使用连接工厂来创建与JMS provider 的连接●Destination:消息被寻址、发送以及接收的对象2.P2PP2P (点对点)消息域使用queue 作为Destination,消息可以被同步或异步的发送和接收,每个消息只会给一个Consumer 传送一次。
activemq用法(一)
activemq用法(一)ActiveMQ用法详解概述ActiveMQ是一款开源的,基于JMS(Java消息服务)规范的消息中间件。
它提供了高性能、可靠的消息传递方式,支持多种通信协议。
安装配置1.下载ActiveMQ二进制文件,解压到指定目录。
2.配置ActiveMQ启动脚本,设置JAVA_HOME和ActiveMQ_HOME环境变量。
3.启动ActiveMQ服务器,通过命令行或脚本方式启动。
发送消息•创建连接工厂对象使用ActiveMQConnectionFactory类创建连接工厂对象,需要指定ActiveMQ服务器的地址和端口。
•创建连接对象通过连接工厂对象的createConnection()方法创建连接对象。
•创建会话对象通过连接对象的createSession()方法创建会话对象,可以设置事务和确认模式。
•创建目标对象使用会话对象的createQueue()或createTopic()方法创建目标对象,分别代表点对点和发布订阅模式。
•创建消息生产者对象通过会话对象的createProducer()方法创建消息生产者对象。
•创建消息对象使用会话对象的createTextMessage()方法创建文本消息对象,可以设置消息内容。
•发送消息通过消息生产者对象的send()方法发送消息。
接收消息•创建连接工厂对象、连接对象、会话对象和目标对象同上。
•创建消息消费者对象通过会话对象的createConsumer()方法创建消息消费者对象。
•注册消息监听器通过消息消费者对象的setMessageListener()方法注册消息监听器,实现对消息的接收和处理。
•接收消息在消息监听器的onMessage()方法中处理接收到的消息。
消息持久化•配置持久化方式在ActiveMQ的配置文件中配置消息持久化方式,可以选择将消息持久化到磁盘,从而保证消息的持久性。
消息传递模式•点对点模式点对点模式下,消息发送者将消息发送到一个指定的队列,消息接收者从队列中接收消息。
ACTIVEMQ入门教程
ACTIVEMQ入门教程ActiveMQ是一个开源的消息中间件,它具有高性能、可靠性和可扩展性的特点,可以在分布式系统中处理大量的消息通信。
本教程将介绍如何入门使用ActiveMQ,包括安装配置、基本概念和使用方法等。
一、安装配置3. 启动ActiveMQ:进入解压目录,找到bin文件夹,执行activemq命令(Windows下执行activemq.bat,Linux下执行activemq.sh)。
5. 配置连接信息:在管理控制台中,可以配置ActiveMQ的连接信息,包括端口号、用户名、密码等。
二、基本概念1. Broker:Broker是ActiveMQ中的核心组件,负责接收和分发消息。
一个Broker可以同时连接多个生产者和消费者。
2. Destination:Destination是消息发送和接收的目的地。
可以分为两种类型:Queue和Topic。
Queue用于Point-to-Point的消息通信,每个消息只能被一个消费者接收;Topic用于Publish/Subscribe的消息通信,每个消息可以被多个订阅者接收。
3. Producer:Producer是消息的发送者,负责将消息发送到Broker的Destination中。
4. Consumer:Consumer是消息的接收者,负责从Broker的Destination中接收消息。
5. Message:Message是ActiveMQ中的消息对象,包含消息的内容和一些元数据信息。
三、使用方法1. 发送和接收消息:首先需要创建一个连接,并创建一个会话。
然后创建一个Destination,并创建一个Producer发送消息到该Destination中。
接收消息的方法类似,创建一个Destination,并创建一个Consumer用于接收消息。
2. 消息过滤:可以通过消息选择器来过滤消息。
消息选择器使用SQL-92语法来选择消息。
例如,可以通过消息属性来选择消息:consumer.receive("color = 'red'")。
ActiveMQ入门
ActiveMQ入门摘要:本文主要讲述ActiveMQ的基本知识和使用方法,并简单结合spr ing使用ActiveMQ。
一、ActiveMQ特性和使用总览企业消息软件从80年代起就存在,它不只是一种应用间消息传递风格,也是一种集成风格。
因此,消息传递可以满足应用间的通知和互相操作。
但是开源的解决方案是到最近10年才出现的。
Apache ActiveMQ就是其中一种。
它使应用间能以异步,松耦合方式交流。
本章将向您介绍ActiveMQ。
1、ActiveMQ的特性ActiveMQ是Apache软件基金下的一个开源软件,它遵循JMS1.1规范(Java Message Service),是消息驱动中间件软件(MOM)。
它为企业消息传递提供高可用,出色性能,可扩展,稳定和安全保障。
ActiveMQ使用Apac he许可协议。
因此,任何人都可以使用和修改它而不必反馈任何改变。
这对于商业上将ActiveMQ用在重要用途的人尤为关键。
MOM的工作是在分布式的各应用之间调度事件和消息,使之到达指定的接收者。
所以高可用,高性能,高可扩展性尤为关键。
ActiveMQ的目标是在尽可能多的平台和语言上提供一个标准的,消息驱动的应用集成。
ActiveMQ实现JMS规范并在此之上提供大量额外的特性。
下面是一个高层次的特性列表。
·遵循JMS规范 ----理解ActiveMQ的起始点是明白ActiveMQ的各种特性是JMS1.1规范的实现。
本章后面将讨论JMS规范提供的好处和保证。
它们包括同步和异步消息传递,一次和只有一次的消息传递,对于预订者的持久消息等等。
依附于JMS规范意味着,不论JMS消息提供者是谁,同样的基本特性都是有效的。
·连接----ActiveMQ提供各种连接选择,包括HTTP,HTTPS,IP多点传送,SSL,STOMP,TCP,UDP,XMPP等。
大量的连接协议支持使之具有更好的灵活性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ActiveMQ入门作者:一路向北摘要:本文主要讲述ActiveMQ的基本知识和使用方法,并简单结合spr ing使用ActiveMQ。
一、ActiveMQ特性和使用总览企业消息软件从80年代起就存在,它不只是一种应用间消息传递风格,也是一种集成风格。
因此,消息传递可以满足应用间的通知和互相操作。
但是开源的解决方案是到最近10年才出现的。
Apache ActiveMQ就是其中一种。
它使应用间能以异步,松耦合方式交流。
本章将向您介绍ActiveMQ。
1、ActiveMQ的特性ActiveMQ是Apache软件基金下的一个开源软件,它遵循JMS1.1规范(Java Message Service),是消息驱动中间件软件(MOM)。
它为企业消息传递提供高可用,出色性能,可扩展,稳定和安全保障。
ActiveMQ使用Apac he许可协议。
因此,任何人都可以使用和修改它而不必反馈任何改变。
这对于商业上将ActiveMQ用在重要用途的人尤为关键。
MOM的工作是在分布式的各应用之间调度事件和消息,使之到达指定的接收者。
所以高可用,高性能,高可扩展性尤为关键。
ActiveMQ的目标是在尽可能多的平台和语言上提供一个标准的,消息驱动的应用集成。
ActiveMQ实现JMS规范并在此之上提供大量额外的特性。
下面是一个高层次的特性列表。
欢迎访问本人百度空间:/snowslince浣花草堂·遵循JMS规范----理解ActiveMQ的起始点是明白ActiveMQ的各种特性是JMS1.1规范的实现。
本章后面将讨论JMS规范提供的好处和保证。
它们包括同步和异步消息传递,一次和只有一次的消息传递,对于预订者的持久消息等等。
依附于JMS规范意味着,不论JMS消息提供者是谁,同样的基本特性都是有效的。
·连接----ActiveMQ提供各种连接选择,包括HTTP,HTTPS,IP多点传送,SSL,STOMP,TCP,UDP,XMPP等。
大量的连接协议支持使之具有更好的灵活性。
很多现有的系统使用一种特定协议并且不能改变,所以一个支持多种协议的消息平台降低了使用的门槛。
虽然连接很重要,但是和其他容器集成也同样重要。
第四章将讲解ActiveMQ的传输连接器(transport connectors)和网络连接器(network connectors)。
·可插拔的持久性和安全----ActiveMQ提供多种持久性方案可供选择,也可以完全按自己需求定制验证和授权。
例如,ActiveMQ通过KahaDB提供自己的超快速消息持久方案(ultra-fast message persistence),但也支持标准的JDBC方案。
ActiveMQ可以通过配置文件提供简单的验证和授权,也提供标准的JAAS登陆模块。
·用Java建立消息驱动应用----ActiveMQ最常用在Java应用中,用于发送和接收消息。
这部分的内容涉及JMS规范API。
·与应用服务器集成----ActiveMQ与java应用服务器集成是很常见的。
·客户端APIs----ActiveMQ对多种语言提供客户端API,除了Java 之外还有C/C++,.NET,Perl,PHP,Python,Ruby等。
这使得ActiveM 欢迎访问本人百度空间:/snowslince浣花草堂Q能用在Java之外的其它语言中。
很多其它语言都可以通过ActiveMQ提供的客户端API使用ActiveMQ的全部特性。
当然,ActiveMQ代理器(broker)仍然是运行在java虚拟机上,但是客户端能够使用其它的被支持的语言。
·代理器集群(Broker clustering)----为了利于扩展,多个Activ eMQ broker能够联合工作。
这个方式就是network of brokers并且能支持多种拓扑结构。
·高级代理器特性和客户端选项----ActiveMQ为代理器和客户端连接提供很多高级的特性。
ActiveMQ也可以通过代理器的XML配置文件支持Apach e Camel。
·简单的管理----ActiveMQ是为开发者设计的。
它并不需要专门的管理工具,因为它提供各种易用且强大的管理特性。
有很多方法去监控ActiveMQ 的各个方面,可以通过JMX使用JConsole或ActiveMQ web console;可以运行ActiveMQ消息报告;可以用命令行脚本;可以通过日志。
2、了解JMS用 ActiveMQ 最好还是了解下 JMS欢迎访问本人百度空间:/snowslince浣花草堂JMS 定义了两种方式:Queue(点对点);Topic(发布/订阅)。
·ConnectionFactory 是连接工厂,负责创建Connection。
·Connection 负责创建 Session。
·Session 创建 MessageProducer(用来发消息)和 MessageConsumer(用来接收消息)。
·Destination 是消息的目的地。
详细的可以网上找些 JMS 规范(有中文版),本文对这两种方式都会有讲解。
二、开始使用ActiveMQ开始使用ActiveMQ并不难。
你只要启动代理器并确保它能接受连接和发送消息。
ActiveMQ有一些自带的例子。
在这部分,你将下载和安装Java SE,下载和安装ActiveMQ,检查Act iveMQ目录,然后第一次启动ActiveMQ。
所需工具包括JDK1.5+、Ant、Ac tiveMQ。
1、JDK下载和安装ActiveMQ 要求Sun Java SE 1.5或以上。
在开始这部分前,必须先安装。
JDK的下载和安装就不是本文介绍重点。
2、Ant下载和安装Ant可以用来构建和运行ActiveMQ自带例子。
Ant可以从Apache Ant 网址下载。
URL: /bindownload.cgi 点击链接地址并选择正确的压缩包。
(tar包是Linux和Unix,zip是W 欢迎访问本人百度空间:/snowslince浣花草堂indows)。
请按照下列地址安装Ant。
URL: /ma nual/install.html。
确保你设置好$ANT_HOME环境变量,并将$ANT_HOM E/bin放到$PATH环境变量里。
安装完毕后你可以运行下面的命令查看Ant版本。
你的可能跟我的不太一样,使用Ant的不同版本,不过这没关系。
一旦An t输出如上信息,你就可以确定Ant都安装正确。
3、ActiveMQ下载和安装ActiveMQ可以从Apache ActiveMQ网站下,URL: http://activem /download.html.点击地址到5.4.3版本,你可以看到tar和zip格式包。
(tar包是Lin ux和Unix,zip是Windows)。
下载完后解压。
我的解压到了E:\tools\a pache-activemq-5.4.3从命令行进入apache-activemq-5.4.3目录,输入如下命令。
欢迎访问本人百度空间:/snowslince浣花草堂·LICENSE----Apache Software Foundation(ASF)要求的一个文件.包含ActiveMQ使用的所有库的许可证.·NOTICE----ASF要求的另一个文件.包含ActiveMQ使用的所有库的版权信息.·README.txt 一个包含一些URL的文档,使新手可以使用ActiveMQ.·WebConsole-README.txt----包含使用ActiveMQ web console 使用说明.·activemq-all-5.4.3.jar---一个jar包包含ActiveMQ所有东西。
放在这里是方便你使用它。
·bin----包含二进制或可运行文件。
ActiveMQ启动脚本就放在里面。
欢迎访问本人百度空间:/snowslince浣花草堂·conf--ActiveMQ所有的配置信息。
·data--日志和持久化文件存储地方。
·docs--包含一个简单的index.html,该文件指向ActiveMQ网站。
·example----ActiveMQ例子。
我们用这些例子来简单的测试Active MQ。
·lib----所有ActiveMQ所需库。
·user-guide.html----一个简单指引启动ActiveMQ和运行例子。
·webapps----ActiveMQ web console和一些网络演示。
下一部分将启动ActiveMQ并用这些例子验证它。
启动ActiveMQ:在命令行中输入一下命令,或者直接运行bin目录下的a ctivemq.bat文件欢迎访问本人百度空间:/snowslince浣花草堂刚才的命令启动了ActiveMQ代理器和一些连接器,使得客户端可以通过一些诸如TCP,SSL,STOMP,XMPP协议连接进来。
请注意现在ActiveMQ已经启动,并且客户端可以通过TCP 61616端口连接进来。
最好的方法是使用A ctiveMQ自带的例子来发送和接收消息。
下面我们来运行第一个例子。
4、运行ActiveMQ第一个例子这个例子是模拟生产者消费者的例子,生产者产生2000条信息,然后关闭,消费者消费2000信息,然后关闭。
下面我们演示一下。
重新打开一个DOS窗口,切到MQ目录的example目录下,我的是E:\t欢迎访问本人百度空间:/snowslince浣花草堂ools\apache-activemq-5.4.3\example然后输入一下命令最后一行显示程序在等待2000个message。
这是一个消费者。
再重新打开DOS窗口并且到MQ目录下的example目录,输入一下命令ant produce r,这个是生产者。
输入命令之后你回看到刚才打开的两个DOS窗口打印出一堆东西欢迎访问本人百度空间:/snowslince浣花草堂消费者窗口变成了如下内容:欢迎访问本人百度空间:/snowslince浣花草堂示例程序演示完毕,观看别人写的看着没啥意思,我们自己写一个程序,测试一下。
三、Queue(点对点)方式在点对点的传输方式中,消息数据被持久化,每条消息都能被消费,没有监听QUEUE地址也能被消费,数据不会丢失,一对一的发布接受策略,保证数据完整。
我们自己编写一个跟上面类似的例子。
1、建立web项目打开myeclipse,新建web项目,内容填下如下:欢迎访问本人百度空间:/snowslince浣花草堂点击finish。