ActiveMQ

作者: lfffasd | 来源:发表于2018-10-26 15:18 被阅读0次

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

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