javase 用来接收activemq消息的两种方式

  • 主动去向activemq消息队列服务器去要
package cn.xxx.activemq;

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

public class CustomerDemo1 {
    public static void main(String[] args) {
        ConnectionFactory connectionFactory = null;//创建active的连接工厂
        Connection connection = null; //得到一个连接
        Destination destination = null;//消息发送的目的地

        try {
            connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER, 
                    ActiveMQConnectionFactory.DEFAULT_PASSWORD, ActiveMQConnectionFactory.DEFAULT_BROKER_URL);//实例化这个连接的工厂
            connection = connectionFactory.createConnection();//由连接工厂创建一个activemq的连接
            connection.start();
            //创建一个会话的session
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//第一个是是否创建事务

            destination = session.createQueue("firstQueue");//设置消息发送的目的地
            /**
             * 创建发送消息的消费者
             */
            MessageConsumer messageConsumer = session.createConsumer(destination);

            while(true){
                //每隔五秒向activemq要一次数据
                TextMessage textMessage = (TextMessage) messageConsumer.receive(5000);
                if(textMessage!=null){
                    System.out.println("收到的消息:"+textMessage.getText());
                }else{
                    break;
                }               
            }


        } catch (Exception e) {
            e.printStackTrace();

        }
    }

}
  • 注册一个监听器监听消息队列服务器
package cn.xxx.activemq;

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

public class CustomerDemo2 {
    public static void main(String[] args) {
        ConnectionFactory connectionFactory = null;//创建active的连接工厂
        Connection connection = null; //得到一个连接
        Destination destination = null;//消息发送的目的地
        Session session ;
        MessageConsumer messageConsumer ;//消息的消费者
        try {
            connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnectionFactory.DEFAULT_USER, 
                    ActiveMQConnectionFactory.DEFAULT_PASSWORD, ActiveMQConnectionFactory.DEFAULT_BROKER_URL);//实例化这个连接的工厂
            connection = connectionFactory.createConnection();//由连接工厂创建一个activemq的连接
            connection.start();
            //创建一个会话的session
            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);//第一个是是否创建事务

            destination = session.createQueue("firstQueue");//设置消息发送的目的地
            /**
             * 创建接收消息的消费者
             */
            messageConsumer = session.createConsumer(destination);

            //注册消息监听
            messageConsumer.setMessageListener(new Listener());

        } catch (Exception e) {
            e.printStackTrace();

        }


    }

}
/*
 * 消息监听器类
 */
public class Listener implements MessageListener{

    @Override
    public void onMessage(Message msg) {
        TextMessage textMessage = (TextMessage) msg;
        try {
            System.out.println(textMessage.getText());
        } catch (JMSException e) {
            e.printStackTrace();
        }

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值