JMS简介 ActiveMQ下载与安装

JMSJava Messaging Service)是Java平台上有关面向消息中间件的技术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发。

JMS 定义了五种不同的消息正文格式,以及调用的消息类型,允许你发送并接收以一

些不同形式的数据,提供现有消息格式的一些级别的兼容性。

· TextMessage--一个字符串对象

· MapMessage--一套名称-值对

· ObjectMessage--一个序列化的 Java 对象

· BytesMessage--一个字节的数据流

· StreamMessage -- Java 原始值的数据流

 JMS消息传递类型

对于消息的传递有两种类型:

一种是点对点的,即一个生产者和一个消费者一一对应;

另一种是发布/ 订阅模式,即一个生产者产生消息并进行发送后,可以由多个消费者

行接收。

ActiveMQ

下载

官方网站下载:http://activemq.apache.org/

安装(Linux

(1)apache-activemq-5.12.0-bin.tar.gz 上传至服务器

(2)解压此文件

tar  zxvf  apache-activemq-5.12.0-bin.tar.gz

(3)apache-activemq-5.12.0目录赋权

chmod 777 apache-activemq-5.12.0

(4)进入apache-activemq-5.12.0\bin目录

5)赋与执行权限

chmod 755 activemq 

--------------------------------------  知识点小贴士    --------------------------

linux 命令chmod 755的意思

chmod是Linux下设置文件权限的命令,后面的数字表示不同用户或用户组的权限。

一般是三个数字:
第一个数字表示文件所有者的权限
第二个数字表示与文件所有者同属一个用户组的其他用户的权限
第三个数字表示其它用户组的权限。

      权限分为三种:读(r=4),写(w=2),执行(x=1) 。 综合起来还有可读可执行(rx=5=4+1)、可读可写(rw=6=4+2)、可读可写可执行(rwx=7=4+2+1)。

      所以,chmod 755 设置用户的权限为: 

1.文件所有者可读可写可执行                                    --7

2.与文件所有者同属一个用户组的其他用户可读可执行 --5 
3.其它用户组可读可执行                                          --5

启动

 ./activemq start

出现下列提示表示成功!

 

假设服务器地址为192.168.25.135 ,打开浏览器输入地址

http://192.168.25.135:8161/ 即可进入ActiveMQ管理页面




账号密码都是admin

列表各列信息含义如下:

Number Of Pending Messages  等待消费的消息 这个是当前未出队列的数量。

Number Of Consumers  消费者 这个是消费者端的消费者数量

Messages Enqueued  进入队列的消息  进入队列的总数量,包括出队列的。

Messages Dequeued  出了队列的消息  可以理解为是消费这消费掉的数量

点对点模式

  一条消息,只会被一个接收端给接收到,哪个接收端先连上ActiveMQ,则会先接收到,而后来的接收端则接收不到那条消息。


JMS入门小Demo

1)创建工程jmsDemo ,引入依赖

<dependencies>
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-client</artifactId>
        <version>5.13.4</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>

(2) 消息生产者

    点对点模式和发布订阅模式 只是设置的消息类型不一样其他一样

package com.demo.queue;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.junit.Test;

import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;

/**
 * 消息生产者
 */
public class QueueProducer {

   @Test
   public void test() throws Exception {
      //1、创建连接工厂:1、用的TCP协议来连接;2、代码客户端来连接用的是61616
      ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.128:61616");
      //2、获取连接
      Connection connection = connectionFactory.createConnection();
      //3、开启连接
      connection.start();
      //4、获取Session对象
      //参数说明:1:是否启动事务;2:是否开启自动:AUTO_ACKNOWLEDGE是自动模式;
      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
      //5、创建发布的消息类型
      Queue queue = session.createQueue("queue-test");
//      和 topic 模式区别只是设置的消息类型不一样其他一样
//    Topic topic = session.createTopic("topic_test");
      //6、创建生产者
      MessageProducer producer = session.createProducer(queue);
      //7、设置发送消息数据
      TextMessage textMessage = session.createTextMessage("欢迎使用ActvieMQ 发送消息");
      //8、生产者发送消息
      producer.send(textMessage);
      //9、关闭资源
      producer.close();
      session.close();
      connection.close();
   }
}
(3) 消息消费者

     只是设置的消息类型不一样, 并且消费者可以是多个

package com.demo.queue;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

/**
 *消息消费者
 */
public class QueueCustomer {

   public static void main (String[] args) throws Exception {
      //1. 创建连接工厂
      ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.128:61616");
      //2. 创建连接
      Connection connection = connectionFactory.createConnection();
      //3. 开启连接
      connection.start();
      //4. 创建session对象
      Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
      //5. 指定接收消息的类型(接收的类型和发送的类型一致)
      Queue queue = session.createQueue("queue-test");
//    Topic topic = session.createTopic("topic_test");  //发布订阅模式
      //6. 创建消费者
      MessageConsumer consumer = session.createConsumer(queue);
      //7. 写监听: 设置监听消息(接受监听到的消息)
      consumer.setMessageListener(new MessageListener() {
         //message 是接收到的消息
         public void onMessage(Message message) {
            TextMessage textMessage = (TextMessage) message;
            try {
               String text = textMessage.getText();
               System.out.println("接收到的消息:"+text);
            } catch (JMSException e) {
               e.printStackTrace();
            }
         }
      });
      //8. 等待时间
        //设置等待键盘按下
      System.in.read();
      //9. 关闭资源
      consumer.close();
      session.close();
      connection.close();
   }

}







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值