ActiveMQ安装

  1. 官网下载ActiveMQ[http://activemq.apache.org/download-archives.html],直接解压即可.

  2. 运行bin,运行activemq.bat。即可启动ActiveMQ服务。
    红色框中显示即为启动成功

  3. 浏览器地址栏访问: http://localhost:8161/admin/

  4. 出现以下界面:
    进入服务界面
    3.创建一个helloworld的消息服务方
    public class QueueSender{

    public static void main(String[] args) throws Exception{

     //获取activeMQ的连接工厂
     ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
    
     //通过工厂创建一个连接
     Connection connection = connectionFactory.createConnection();
    
     //启动一个连接
     connection.start();
    
     /**
      * 连接之后获得一个会话
      * Boolean.TRUE: 是否开启事务
      * Session.AUTO_ACKNOWLEDGE: 消息自动确认
      */
     Session session  = connection.createSession(Boolean.TRUE,Session.AUTO_ACKNOWLEDGE);
    
     //将消息发送至目的地
     Destination destination = session.createQueue("my-first-queue");
    
     //会话对象将消息发送至目的地
     MessageProducer producer = session.createProducer(destination);
    
     for (int i = 0;i<3;i++){
    
         TextMessage message = session.createTextMessage("message--" + i);
    
         Thread.sleep(1000);
         //通过消息生产者发出消息
         producer.send(message);
    
         System.out.println("接受消息: --" + message.getText());
     }
    
     session.commit();
     session.close();
     connection.close();
    

    }
    4.运行该程序后,可以在ActiveMQ的消息服务器中查找程序生成的消息,如下:
    在这里插入图片描述
    (1),从queue中查找程序生成的队列
    (2),代码中设置的消息队列的名称
    (3),(4)表示有3条消息,还没有读取
    (5)读取消息的数量(此时还没有读取消息)

5.创建消息的消费方:
/**

  • 服务的消费方
    */
    public class QueueReceiver{
    public static void main(String[] args) throws Exception{

     //
     ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://127.0.0.1:61616");
    
     Connection connection = connectionFactory.createConnection();
    
     connection.start();
    
     final Session session = connection.createSession(Boolean.TRUE,Session.AUTO_ACKNOWLEDGE);
    
     //队列名称与之前的消息服务方的队列名称保持一致
     Destination destination = session.createQueue("my-first-queue");
    
     MessageConsumer consumer = session.createConsumer(destination);
    
     int i = 0;
    
     while(i<3){
    
         i++;
         /**通过consumer去接受一个消息,强转成TextMessage对象
          * 注:receive方法返回的是一个Message类型的对象,Message是一个接口
          * TextMessage是Message接口的一个实现类
          */
         TextMessage textMessage = (TextMessage) consumer.receive();
    
         session.commit();
         System.out.println("收到消息: " + textMessage.getText());
     }
    
     session.close();
     connection.close();
    

    }
    }
    在这里插入图片描述
    Messages Received:表示刚才程序接收了三条消息
    Messages Sent :共发送9条消息
    Number Of Pending Messages:还有6条消息没有进行读取
    在这里插入图片描述
    将消息消费方的程序再次执行两次后,将所有的消息全部进行消费
    结论:从以上的消息服务方,消息的消费方,我们可以得出,
    1.消息之间是异步传输的,程序没有同步执行
    2.消息的服务方,消息的消费方不直接 进行调用,而是通过"第三方"(也就是消息中间件)进行数据传递.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值