PHP前端开发

如何使用ActiveMQ测试小程序

百变鹏仔 6天前 #前端问答
文章标签 如何使用

介绍 Active MQ是个消息队列管理器,用于通讯的中间件。现在由我来给大家介绍一下如何使用ActiveMQ测试小程序。

首先需要下载ActiveMQ,并修改内存

修改bin目录下activemq.bat
在最后一行加入

set ACTIVEMQ_OPTS=-Xms1G -Xmx1G

保存后执行该bat文件
新建maven项目
pom文件中加入依赖

<dependencies>        <dependency>            <groupid>org.apache.activemq</groupid>            <artifactid>activemq-all</artifactid>            <!--我的mq版本为5.9.0-->            <version>5.9.0</version>        </dependency>        <!-- https://mvnrepository.com/artifact/org.apache.activemq/activemq-broker -->        <dependency>            <groupid>org.apache.activemq</groupid>            <artifactid>activemq-broker</artifactid>            <version>5.10.0</version>        </dependency>        <!-- https://mvnrepository.com/artifact/org.apache.activemq/activemq-client -->        <dependency>            <groupid>org.apache.activemq</groupid>            <artifactid>activemq-client</artifactid>            <version>5.14.0</version>        </dependency>    </dependencies>

发送端程序

import org.apache.activemq.ActiveMQConnection;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*;public class Send {   // private static final int SEND_NUMBER = 10;    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的实现jar        connectionFactory = 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注意参数值test是一个服务器的queue,须在ActiveMQ的console配置            destination = session.createQueue("test");                        //得到发送者            producer = session.createProducer(destination);                        //设置不持久化,实际情况请根据项目决定            producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);                        //构造消息,这里写死了,项目就是参数,或者方法获取            sendMessage(session,producer);            session.commit();        }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 <p>接收端程序</p><pre class="brush:js;toolbar:false;">import org.apache.activemq.ActiveMQConnection;import org.apache.activemq.ActiveMQConnectionFactory;import javax.jms.*;public class revice {    public static void main(String[] args) {        ConnectionFactory connectionFactory;        Connection connection = null;        Session session;        Destination destination;        //接收者-消费者        MessageConsumer messageConsumer;        connectionFactory = new ActiveMQConnectionFactory(                ActiveMQConnectionFactory.DEFAULT_USER,                ActiveMQConnectionFactory.DEFAULT_PASSWORD, "tcp://localhost:61616");                        try{            connection = connectionFactory.createConnection();            connection.start();            session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);            destination = session.createQueue("test");            messageConsumer = session.createConsumer(destination);            while(true){                TextMessage message = (TextMessage) messageConsumer.receive(1000);                                if(null != message){                    System.out.println("收到:"+message.getText());                }else{                    break;                }                message.acknowledge();            }        }catch(Exception ex){            ex.printStackTrace();        }finally{            try{                if(null != connection){                    connection.close();                }            }catch(Throwable ig){            }        }    }}