ActiveMq简单部署使用

工作终于消停了一阵,之前一直对于消息中间件很好奇,今天抽空看了一下ActiveMq,简单部署在虚拟机上,用程序跑了一下,终于大致明白一些。

1.什么是中间件

非操作系统软件,非业务应用软件,不是直接给最终用户使用,不能直接给用户带来价值的软件,我们就可以称为中间件(比如Dubbo,Tomcat,Jetty,Jboss都是属于的)。

2.什么是ActiveMq

ActiveMQ是Apache所提供的一个开源的消息系统,完全采用Java来实现,因此,它能很好地支持J2EE提出的JMS(Java Message Service,即Java消息服务)规范。JMS是一组Java应用程序接口,它提供消息的创建、发送、读取等一系列服务。JMS提供了一组公共应用程序接口和响应的语法,类似于Java数据库的统一访问接口JDBC,它是一种与厂商无关的API,使得Java程序能够与不同厂商的消息组件很好地进行通信。

3.ActiveMq模式

ActiveMq有两种模式,一是点对点模式(Quene),二是发布/订阅模式(Topic),点对点模式即消费者不共享生产者生产的消息,发布订阅/模式则可共享。

4.Linux安装

官网地址:http://activemq.apache.org/components/classic/download/

将压缩包解压出来,进入bin目录

使用命令:./activemq console 启动activemq,在地址栏输入地址:http://127.0.0.1:8161,进入activemq管理页面:

5.Quene生产者



import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;


public class MessageProducer {
  //定义ActivMQ的连接地址
  private static final String ACTIVEMQ_URL = "tcp://192.168.88.129:61616";
  //定义发送消息的队列名称
  private static final String QUEUE_NAME = "MyMessage";

  public static void main(String[] args) throws JMSException {
    //创建连接工厂
    ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
    //创建连接
    Connection connection = activeMQConnectionFactory.createConnection();
    //打开连接
    connection.start();
    //创建会话
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    //创建队列目标
    Destination destination = session.createQueue(QUEUE_NAME);
    //创建一个生产者
    javax.jms.MessageProducer producer = session.createProducer(destination);
    //创建模拟100个消息
    for (int i = 1 ; i <= 100 ; i++){
      TextMessage message = session.createTextMessage("我发送message:" + i);
      //发送消息
      producer.send(message);
      //在本地打印消息
      System.out.println("我现在发的消息是:" + message.getText());
    }
    //关闭连接
    connection.close();
  }
}

运行代码,控制台答应以下:

那么怎么在ActiveMq里面看到这些消息呢?

点击的时候会让你输入账号和密码,都是admin

 

6.Quene消费者



import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;

/**
 * @author :zkn
 * @date :Created in 2019-09-24 20:26
 * @description:activeMq消费者
 */
public class MessageConsumer {


  //定义ActivMQ的连接地址
  private static final String ACTIVEMQ_URL = "tcp://192.168.88.129:61616";
  //定义发送消息的队列名称
  private static final String QUEUE_NAME = "MyMessage";

  public static void main(String[] args) throws JMSException {
    //创建连接工厂
    ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(
        ACTIVEMQ_URL);
    //创建连接
    Connection connection = activeMQConnectionFactory.createConnection();
    //打开连接
    connection.start();
    //创建会话
    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    //创建队列目标
    Destination destination = session.createQueue(QUEUE_NAME);
    //创建消费者
    javax.jms.MessageConsumer consumer = session.createConsumer(destination);
    //创建消费的监听
    consumer.setMessageListener(new MessageListener() {
      @Override
      public void onMessage(Message message) {
        TextMessage textMessage = (TextMessage) message;
        try {
          System.out.println("获取消息:" + textMessage.getText());
        } catch (JMSException e) {
          e.printStackTrace();
        }
      }
    });
  }


}

消费者跑起来会将生产者生产的消息消费掉:

6.创建第二个消费者,将消费者代码重新拷贝一份,作为第二个消费者,生产者生产100条消息,看下两个消费者控制台打印的东西:

 

对比打印,轻松得到答案,即两个消费者分别消费生产者生产的消息。Topic模式后面再写,今天先到这

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值