zoukankan      html  css  js  c++  java
  • Spring消息中间件ActiveMQ

    1:下载ActiveMQ (apache-activemq-5.15.6)

    2:下载后的结构如下

    3:启动activeMQ

        可以通过cmd控制台的方式,也可以通过注册services服务启动的方式

       3.1:通过cmd的方式启动,看是win32还是win64的系统,我在此以win64为例.选中activemq.bat,点击反键,以管理员身份运行

     

       3.2:通过注册服务的方式启动,注册好后,可以直接通过服务中进行启动

      选中InstallService.bat,以管理员的身份运行

    注册成功后ActiveMQ启动即可

       3.3;ActiveMQ的管理端访问页面http://127.0.0.1:8161 ,用户名和密码都是admin

     4:编码(有种不同的方式实现ActiveMQ,主题模式和队列模式)

        4.1主题模式

        提供者Producer

    package com.svse.topit;

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

    /***
    * active 主题模式
    * @author lenovo
    *
    */
    public class AppProducer {
         private static final String url="tcp://127.0.0.1:61616";
         private static final String topicName="topic-test";
         public static void main(String[] args) throws JMSException {
         //创建connectionFactory工厂
        ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(url);
        //创建connection
        Connection connection=connectionFactory.createConnection();
         //启动连接
        connection.start();
         //创建会话
         Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
         //创建一个目标
          Destination destination=session.createTopic(topicName);
         //创建一个生产者
         MessageProducer message= session.createProducer(destination);

         for (int i = 0; i < 100; i++) {
          //创建消息
           TextMessage textMessage=session.createTextMessage("test"+i);
         //发布消息
          message.send(textMessage);

          System.out.println("发送的消息:"+textMessage.getText());
        }
          //关闭连接
         connection.close();
       }
    }

    消费者Consumer

    package com.svse.queue;

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

    import org.apache.activemq.ActiveMQConnectionFactory;

    public class AppConsumer {

         private static final String url="tcp://127.0.0.1:61616";
         private static final String queueName="queue-test";

         public static void main(String[] args) throws JMSException {
          // TODO Auto-generated method stub
          ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(url);
     
          Connection connection=connectionFactory.createConnection();

          connection.start();

           Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

           Destination destination=session.createQueue(queueName);

           MessageConsumer consumer=session.createConsumer(destination);
           consumer.setMessageListener(new MessageListener() {
           public void onMessage(Message message) {
             TextMessage textMessage=(TextMessage) message;
             try {
                System.out.println("接收到的消息:"+textMessage.getText());
            } catch (JMSException e) {
               e.printStackTrace();
           }
         }
         });

        //connection.close();

      }

    }

      4.2队列模式

    提供者Producer

    package com.svse.queue;

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

    /***
    * active 队列模式
    * @author lenovo
    *
    */
    public class AppProducer {
        private static final String url="tcp://127.0.0.1:61616";
        private static final String queueName="queue-test";
        public static void main(String[] args) throws JMSException {
           ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(url);

           Connection connection=connectionFactory.createConnection();

           connection.start();

           Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

           Destination destination=session.createQueue(queueName);

           MessageProducer message= session.createProducer(destination);

             for (int i = 0; i < 100; i++) {
            TextMessage textMessage=session.createTextMessage("test"+i);
            message.send(textMessage);

            System.out.println("发送的消息:"+textMessage.getText());
          }

         connection.close();
        }
    }

    消费者Consumer

    package com.svse.queue;

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

    import org.apache.activemq.ActiveMQConnectionFactory;

    public class AppConsumer {

        private static final String url="tcp://127.0.0.1:61616";
        private static final String queueName="queue-test";

        public static void main(String[] args) throws JMSException {
          // TODO Auto-generated method stub
          ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(url);

            Connection connection=connectionFactory.createConnection();

          connection.start();

          Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

          Destination destination=session.createQueue(queueName);

          MessageConsumer consumer=session.createConsumer(destination);
          consumer.setMessageListener(new MessageListener() {

          public void onMessage(Message message) {
            TextMessage textMessage=(TextMessage) message;
            try {
              System.out.println("接收到的消息:"+textMessage.getText());
            } catch (JMSException e) {
              e.printStackTrace();
            }
           }
          });

          //connection.close();
        }

    }

  • 相关阅读:
    Oracle SQL性能优化
    spring aop简单日志实例
    一个简单的Spring AOP例子
    jQuery的三种$()
    Mac 上的 outlook 一直让输入密码
    idea 中设置成公司规范的代码格式
    Java 中的锁——Lock接口
    TimeUnit枚举类
    Thread.join()的使用
    java线程的等待、通知机制【读书笔记】
  • 原文地址:https://www.cnblogs.com/zhaosq/p/9797575.html
Copyright © 2011-2022 走看看