ActiveMQ demo 测试

1.环境搭建

单节点windows 系统 版本apache-activemq-5.11.1 ,运行D:\apache-activemq-5.11.1\bin\win64\activemq.bat 即可

控制台界面 localhost:8161/admin  登陆 ,admin/admin123

 

引入all jar包

生产者:

package test.mq.helloworld;

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.ActiveMQConnectionFactory;

public class Sender {
    public static void main(String[] args)throws Exception {
        //active.xml 设置用户名密码</borker>
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("caolihua","caolihua","tcp://localhost:61616");
        Connection connection = connectionFactory.createConnection();
        //开启连接
        connection.start();
        //1.事务控制,2.自动签收(最好采用手动签收方式)二者都是创建一个新的线程去给队列确认消息消费完毕
        Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
        //设置目的地为queue1队列
        Destination destination = session.createQueue("queue1");
        MessageProducer messageProducer = session.createProducer(null);
        for(int i =1;i<=5;i++){
            TextMessage textMessage = session.createTextMessage();
            textMessage.setText("我是消息内容,id为:"+i);
            //1.消息目的地2.消息内容3.是否持久化4.优先级(大量消息概率上满足,0-4:普通,5-9:加急)5.消息存活时间(毫秒级),超时出列
            //消息顺序消费机制,后续讨论
            messageProducer.send(destination, textMessage, DeliveryMode.NON_PERSISTENT, i, 1000*60);
            System.out.println("生产者:"+textMessage.getText());
        }
    //关闭连接会相应关闭session、producer、consumer
if(connection!=null){ connection.close(); } } }

 启动后,会看到控制台入待处理消息,入队消息,出队消息情况

 消费者:

package test.mq.helloworld;

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.ActiveMQConnectionFactory;

public class Receiver {

    public static void main(String[] args) throws Exception {
        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("caolihua","caolihua","tcp://localhost:61616");
        Connection connection = connectionFactory.createConnection();
        connection.start();
        Session session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);
        Destination destination = session.createQueue("queue1");
        MessageConsumer messageConsumer = session.createConsumer(destination);
    //循环监听
while(true){
       //receive 阻塞在这里 TextMessage msg
= (TextMessage)messageConsumer.receive(); if(msg==null) break; System.out.println("收到内容:"+msg.getText()); } if(connection!=null){ connection.close(); } } }

执行循环监听消费,消费完了,出队消息有值了。

 

这是简单的P2P模式,还有发布订阅模式(广播方式)

 

posted on 2017-06-24 12:07  老曹123  阅读(264)  评论(0)    收藏  举报

导航