ActiveMQ

1.pom依赖

     <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-all</artifactId>
            <version>5.11.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-web</artifactId>
            <version>5.11.1</version>
        </dependency>
    </dependencies>

2.启动ActiveMQ

  http://localhost:8161/admin/ 进入其web界面
  其中Queues是点对点发送,Topics是订阅多方发送
image.png

3、activeMQ的生产者

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


import javax.jms.*;


/**
 * Created by peaimage on 2018/10/26.
 */
public class JMSProducer {
    private static  final  String  USERNAME= ActiveMQConnection.DEFAULT_USER;//默认连接用户
    private static final   String  PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD;//默认连接密码
    private static final   String  BROKERURL=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.BROKERURL);
        try {
            connection=connectionFactory.createConnection();//通过连接工厂获取连接
            connection.start();//启动连接
            session=connection.createSession(Boolean.TRUE,Session.AUTO_ACKNOWLEDGE);//创建Session
            destination=session.createQueue("FirstQueue1");//创建消息队列
//          destination=session.createTopic("FirstTopic1");   //创建订阅消息
            messageProducer=session.createProducer(destination);//创建消息生产者
            sendMessage(session,messageProducer);
            session.commit();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if (connection!=null){
               try{
                    connection.close();
               }catch (Exception e){
                   e.printStackTrace();
               }
            }
        }
    }
    public static void sendMessage(Session session,MessageProducer messageProducer){
        for (int i=0;i<JMSProducer.SENDNUM;i++){
            try {
                TextMessage message=  session.createTextMessage("ActiveMQ发送的消息"+i);
                messageProducer.send(message);
                System.out.println("发送消息"+i);
            }catch (Exception e){
                e.printStackTrace();
            }

        }
    }
}

4、activeMQ的消费者

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

import javax.jms.*;

/**
 * Created by peaimage on 2018/10/26.
 */
public class JMSConsumer {
    private static  final  String  USERNAME= ActiveMQConnection.DEFAULT_USER;//默认连接用户
    private static final   String  PASSWORD=ActiveMQConnection.DEFAULT_PASSWORD;//默认连接密码
    private static final   String  BROKERURL=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;//消息目的地
        MessageConsumer messageConsumer;//消息消费者
        try {
            connectionFactory=new ActiveMQConnectionFactory(JMSConsumer.USERNAME,JMSConsumer.PASSWORD,JMSConsumer.BROKERURL);//实例化工厂
            connection=connectionFactory.createConnection();//创建连接
            connection.start();//启动连接
            session=connection.createSession(Boolean.FALSE,Session.AUTO_ACKNOWLEDGE);//创建session
            destination=session.createQueue("FirstQueue1");//创建连接队列
//          destination=session.createTopic("FirstTopic1");创建订阅消息
            messageConsumer=session.createConsumer(destination);//创建消息消费者
//         直接进行消息消费
//               while (true){
//               TextMessage textMessage= (TextMessage)messageConsumer.receive(1000000);
//               if (textMessage!=null){
//                   System.out.println(textMessage.getText());
//               }else {
//                   break;
//               }
//               }
            messageConsumer.setMessageListener(new Listenr());//创建消息监听


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



    }
}

5、消息监听

import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

/**
 * Created by peaimage on 2018/10/26.
 */
public class Listenr implements MessageListener {
    public void onMessage(Message message) {
        try {
            System.out.println("收到的消息"+((TextMessage)message).getText());
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ActiveMQ 简介:ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ ...
    CoderZS阅读 2,704评论 0 23
  • 简介 ActiveMQ 特点 ActiveMQ 是由 Apache 出品的一款开源消息中间件,旨在为应用程序提供高...
    预流阅读 5,956评论 4 21
  • 个人专题目录[https://www.jianshu.com/p/140e2a59db2c] 一、JMS简介 全称...
    Java及SpringBoot阅读 2,133评论 0 10
  • 什么是activeMQ activeMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用...
    赵铁柱啊阅读 1,977评论 1 6
  • ActiveMQ入门教程 本博客内容皆为网络搜集而来,不保证任何版权问题,不保证长期有效性(即具有时效性),如有侵...
    龙圣贤阅读 34,012评论 6 48