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();
    }

}

原文地址:https://www.cnblogs.com/zhaosq/p/9797575.html