ActiveMQ(下载,启动,java程序中 如何操做)

为了快速上手ActiveMQ 找个一个windows版本的mq来实现它的功能html

1.http://activemq.apache.org/activemq-5158-release.html 下载java

2.解压文件apache

3.根据本身电脑的位数,选择 是32位仍是64位启动windows

4.双击 activemp.bat 启动mq后端

5.启动成功之后能够请求反问mq管理后端地址:127.0.0.1:8161服务器

6.第一次默认登陆帐户和密码 都是admin session

7.双击Queuestcp

name:队列名字ide

Number Of Pending Messages 等待消费的消息 这个是当前未出队列的数量。能够理解为总接收数-总出队列数 测试

Number Of Consumers  消费者 这个是消费者端的消费者数量 
Messages Enqueued 进入队列的消息  进入队列的总数量,包括出队列的。 这个数量只增不减 
Messages Dequeued 出了队列的消息  能够理解为是消费这消费掉的数量 

 

8.根据队列的变化状况,7图中的各个数据都会出现相应的变化

9.pom.xml中引入 ActiveMQ的依赖

<dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-core</artifactId>
            <version>5.7.0</version>
        </dependency>

10.java MQ 生产者测试代码:

  

package com.example.demo.producter; import javax.jms.Connection; import javax.jms.DeliveryMode; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; public class ActiveMqProducter { public static String url = "tcp://127.0.0.1:61616"; public static void main(String[] args) throws JMSException { // 根据用户名 和密码,地址,获取JMS 的链接工厂 61616端口 是mq服务的端口 而8161 是mq提供的管理后端的端口
        ActiveMQConnectionFactory connetionFactory = new ActiveMQConnectionFactory("admin", "admin", url); // 从链接工厂建立一条链接
        Connection connection = connetionFactory.createConnection(); // 开启链接
 connection.start(); // 建立session会话,第一参数表示启用事务处理,第二个参数表示启动哪一种应答模式,这里启用的是自动应答 一个相似 接受 或者发送的线程
        Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); // 用session建立一个
        Destination destination = session.createQueue("mq-msg"); // MessageProducer:消息生产者
        MessageProducer producer = session.createProducer(destination); // 设置不持久化
 producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); // 发送一条消息
        for (int i = 1; i <= 5; i++) { sendMsg(session, producer, i); } connection.close(); } /** * 在指定的会话上,经过指定的消息生产者发出一条消息 * * @param session * 消息会话 * @param producer * 消息生产者 */
    public static void sendMsg(Session session, MessageProducer producer, int i) throws JMSException { // 建立一条文本消息
        TextMessage message = session.createTextMessage("Hello ActiveMQ!" + i); // 经过消息生产者发出消息
 producer.send(message); } }

 

 运行测试类之前:

 

 运行测试类之后:

11 建立MQ java的消费者代码:

package com.example.demo.consumer; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageConsumer; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnection; import org.apache.activemq.ActiveMQConnectionFactory; public class Consumer { public static void main(String[] args) throws JMSException { // ConnectionFactory :链接工厂,JMS 用它建立链接
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("admin", "admin", "tcp://127.0.0.1:61616"); // JMS 客户端到JMS Provider 的链接
        Connection connection = connectionFactory.createConnection(); connection.start(); // Session: 一个发送或接收消息的线程
        Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE); // Destination :消息的目的地;消息发送给谁. // 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置
        Destination destination = session.createQueue("mq-msg"); // 消费者,消息接收者
        MessageConsumer consumer = session.createConsumer(destination); while (true) { TextMessage message = (TextMessage) consumer.receive(); if (null != message) { System.out.println("收到消息:" + message.getText()); } else
                break; } session.close(); connection.close(); } }

 

运行消费者之后:

管理后端的数据变化:

 

 

 

12.经过简单的代码,能够看出,生产者生产消息放到队列之后,若是没有消费者消费,则消息会一直存放在队列里(关闭MQ,没有持久化除外),直到消费者成功消费完队列的消息,消费成功 则通知队列,清除该消息

相关文章
相关标签/搜索