美文网首页我爱编程
九浅一深之ActiveMQ

九浅一深之ActiveMQ

作者: 内卷星球 | 来源:发表于2018-03-31 03:08 被阅读0次

下载ActiceMQ : http://activemq.apache.org/

运行ActiveMQ服务

  • 双击bin目录下的activemq.bat脚本文件
  • ActiveMQ默认使用的TCP连接端口是61616, 通过查看该端口的信息可以测试ActiveMQ是否成功启动 netstat -an|find “61616”
  • ActiveMQ默认启动时,启动了内置的jetty服务器,提供一个用于监控ActiveMQ的admin应用。admin:http://127.0.0.1:8161/admin/,账号密码默认admin
  • Ctrl+Shift+C 停止服务

HelloWorld

  • 生产者
public class JMSProducer {

    //默认连接用户名
    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(JMSProducer.USERNAME, JMSProducer.PASSWORD, JMSProducer.BROKEURL);

        try {
            //通过连接工厂获取连接
            connection = connectionFactory.createConnection();
            //启动连接
            connection.start();
            //创建session
            session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);
            //创建一个名称为HelloWorld的消息队列
            destination = session.createQueue("HelloWorld");
            //创建消息生产者
            messageProducer = session.createProducer(destination);
            //发送消息
            sendMessage(session, messageProducer);

            session.commit();

        } 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 < JMSProducer.SENDNUM; i++) {
            //创建一条文本消息
            TextMessage message = session.createTextMessage("ActiveMQ 发送消息" +i);
            System.out.println("发送消息:Activemq 发送消息" + i);
            //通过消息生产者发出消息
            messageProducer.send(message);
        }

    }
}
  • 消费者
public class JMSConsumer {

    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(JMSConsumer.USERNAME, JMSConsumer.PASSWORD, JMSConsumer.BROKEURL);
        try {
            //通过连接工厂获取连接
            connection = connectionFactory.createConnection();
            //启动连接
            connection.start();
            //创建session
            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            //创建一个连接HelloWorld的消息队列
            destination = session.createQueue("HelloWorld");
            //创建消息消费者
            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();
        }
    }
}

相关文章

  • 九浅一深之ActiveMQ

    下载ActiceMQ : http://activemq.apache.org/ 运行ActiveMQ服务 双击b...

  • 九浅一深之JMS

    消息模型 点对点模型 概念 消息队列(Queue) 发送者(Sender) 接收者(Receiver) 每个消息都...

  • 九浅一深之RabbitMQ

    RabbitMQ是一个开源的AMQP实现:AMQP,即Advanced Message Queuing Proto...

  • 论学习

    深入浅出、深入深出、浅入浅出、浅入深出。学而知之,学而习知,知之而不知,知之而学知。 孔子曰:“生而知之者,上也;...

  • 执念、无为与原则

    说说“记”,其实就是执念。 “记”是想之浅界,“忘”是想之深界,触是欲之浅界,离是欲之深界。 比如讨好是执,分析她...

  • 美源于生活,归于生活

    “少年读书,如隙中窥月;中年读书,如庭中望月;老年读书,如台上玩月。皆以阅历之浅深,为所得之浅深耳。” ...

  • 谈写诗填词(四)

    意深词浅方显诗词真境界 诗词境界高低,不在辞藻之华丽,亦非用典之生僻。境界高者,多为意深而词浅,亦曰“深入浅出”。...

  • java消息服务之ActiveMQ入门(0x01)

    java消息服务之ActiveMQ入门(0x02) ActiveMQ能做什么 大多数情况下ActiveMQ被用于做...

  • Objective-C中的浅拷贝和深拷贝

    Objective-C中的浅拷贝和深拷贝IOS开发之深拷贝与浅拷贝(mutableCopy与Copy)详解iOS ...

  • 《玉井奥诀》解读(三)

    原文:月气浅深,何者主权? 万公注:月建之下,气候浅深,五行之气,是何干神,正当此日天时之今,五日一任之气。一云,...

网友评论

    本文标题:九浅一深之ActiveMQ

    本文链接:https://www.haomeiwen.com/subject/rmdfqftx.html