activeMQ简单事例应用

1.先开启MQ服务
这里写图片描述

包结构:
这里写图片描述
2.创建发送者

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;

/**
 * 消息的生产者 
 * http://localhost:8161/admin/queues.jsp监控平台访问地址
 * @author 
 * @date 
 */
public class Product {
    private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;// 默认连接用户名
    private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;// 默认连接密码
    private static final String BROKEURL = ActiveMQConnection.DEFAULT_BROKER_URL;// 默认连接地址
    private static final int SENDNUM = 10;// 发送的消息数量

    public static void main(String[] args) {
        ConnectionFactory connectionFactory;// 连接工厂
        Connection connection = null;// 连接
        Session session;// 会话 接受或者发送消息的线程
        Destination destination;// 消息的目的地
        MessageProducer messageProducer;// 消息生产者(接口  目标)
        // 实例化连接工厂
        connectionFactory = new ActiveMQConnectionFactory(Product.USERNAME,Product.PASSWORD, Product.BROKEURL);
        try {
            connection = connectionFactory.createConnection();// 通过连接工厂获取连接
            connection.start();// 启动连接
            session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);// 创建session
            destination = session.createQueue("java0901");// 创建一个名称为java0901的消息队列(可以理解为qq群的群名)
            messageProducer = session.createProducer(destination);// 创建消息生产者
            sendMessage(session, messageProducer);// 发送消息
            session.commit();//最后要commint一下要不消息进不到消息管道中
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (connection != null) {
                try {
                    connection.close();
                } catch (JMSException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

发送消息

/**
     * 发送消息
     * @param session
     * @param messageProducer 消息生产者
     * @throws Exception
     */
    public static void sendMessage(Session session,
MessageProducer messageProducer) throws Exception {
        for (int i = 0; i < Product.SENDNUM; i++) {               // 创建一条文本消息
            TextMessage message = session.createTextMessage("ActiveMQ 发送消息" + i);

            System.out.println("发送消息:Activemq 发送消息" + i);
// 通过消息生产者发出消息
        }
    }

接收消息

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;


/**
 * 消息的接收者、消费者
 * http://localhost:8161/admin/queues.jsp
 * @author 
 * @date 
 * 
 */
public class Consumer {

    private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;// 默认连接用户名
    private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;// 默认连接密码
    private static final String BROKEURL = ActiveMQConnection.DEFAULT_BROKER_URL;// 默认连接地址

    public static void main(String[] args) {
        ConnectionFactory connectionFactory;// 连接工厂
        Connection connection = null;// 连接
        Session session;// 会话 接受或者发送消息的线程
        Destination destination;// 消息的目的地
        MessageConsumer messageConsumer;// 消息的消费者
        // 实例化连接工厂
        connectionFactory = new ActiveMQConnectionFactory(Consumer.USERNAME,Consumer.PASSWORD, Consumer.BROKEURL);
        try {
            connection = connectionFactory.createConnection();// 通过连接工厂获取连接
            connection.start();// 启动连接
            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);// 创建session
            destination = session.createQueue("java0901");// 创建一个连接nihao1的消息队列
            messageConsumer = session.createConsumer(destination);// 创建消息消费者
//一直处于接收状态,有消息就接收
            while (true) {
                TextMessage textMessage =                     (TextMessage) messageConsumer.receive(100000);
                if (textMessage != null) {
                    System.out.println("收到的消息:" + textMessage.getText());
                } else {
                    break;
                }
            }
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值