• ActiveMQ下载与安装(消息中间件JMS)


    下载

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

    1.3.2安装(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.0in目录

    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

    1.3.3启动

     ./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  出了队列的消息  可以理解为是消费这消费掉的数量

     

    2. JMS入门小Demo

    2.1点对点模式

    点对点的模式主要建立在一个队列上面,当连接一个列队的时候,发送端不需要知道接收端是否正在接收,可以直接向ActiveMQ发送消息,发送的消息,将会先进入队列中,如果有接收端在监听,则会发向接收端,如果没有接收端接收,则会保存在activemq服务器,直到接收端接收消息,点对点的消息模式可以有多个发送端,多个接收端,但是一条消息,只会被一个接收端给接收到,哪个接收端先连上ActiveMQ,则会先接收到,而后来的接收端则接收不到那条消息

    2.1.1消息生产者

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

       <dependency>

    <groupId>org.apache.activemq</groupId>

    <artifactId>activemq-client</artifactId>

    <version>5.13.4</version>

     </dependency>

    2)创建类QueueProducer  main方法代码如下:

    //1.创建连接工厂

    ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://192.168.25.135:61616");

    //2.获取连接

    Connection connection = connectionFactory.createConnection();

    //3.启动连接

    connection.start();

    //4.获取session  (参数1:是否启动事务,参数2:消息确认模式)

    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

    //5.创建队列对象

    Queue queue = session.createQueue("test-queue");

    //6.创建消息生产者

    MessageProducer producer = session.createProducer(queue);

    //7.创建消息

    TextMessage textMessage = session.createTextMessage("欢迎来到神奇的品优购世界");

    //8.发送消息

    producer.send(textMessage);

    //9.关闭资源

    producer.close();

    session.close();

    connection.close();

    上述代码中第4步创建session  的两个参数:

    1个参数 是否使用事务

    2个参数 消息的确认模式

    · AUTO_ACKNOWLEDGE = 1    自动确认

    · CLIENT_ACKNOWLEDGE = 2    客户端手动确认   

    · DUPS_OK_ACKNOWLEDGE = 3    自动批量确认

    · SESSION_TRANSACTED = 0    事务提交并确认

    运行后通过ActiveMQ管理界面查询

    2.1.2消息消费者

    创建类QueueConsumer main方法代码如下:

    //1.创建连接工厂

    ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://192.168.25.135:61616");

    //2.获取连接

    Connection connection = connectionFactory.createConnection();

    //3.启动连接

    connection.start();

    //4.获取session  (参数1:是否启动事务,参数2:消息确认模式)

    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

    //5.创建队列对象

    Queue queue = session.createQueue("test-queue");

    //6.创建消息消费

    MessageConsumer consumer = session.createConsumer(queue);

     

    //7.监听消息

    consumer.setMessageListener(new MessageListener() {

    public void onMessage(Message message) {

    TextMessage textMessage=(TextMessage)message;

    try {

    System.out.println("接收到消息:"+textMessage.getText());

    } catch (JMSException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

    });

    //8.等待键盘输入

    System.in.read();

    //9.关闭资源

    consumer.close();

    session.close();

    connection.close();

    执行后看到控制台输出

     

     

     

    2.1.3运行测试

    同时开启2个以上的消费者,再次运行生产者,观察每个消费者控制台的输出,会发现只有一个消费者会接收到消息。

    2.2 发布/订阅模式

    2.2.1消息生产者

    创建类TopicProducer main方法代码如下:

    //1.创建连接工厂

    ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://192.168.25.135:61616");

    //2.获取连接

    Connection connection = connectionFactory.createConnection();

    //3.启动连接

    connection.start();

    //4.获取session  (参数1:是否启动事务,参数2:消息确认模式)

    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

    //5.创建主题对象

    Topic topic = session.createTopic("test-topic");

    //6.创建消息生产者

    MessageProducer producer = session.createProducer(topic);

    //7.创建消息

    TextMessage textMessage = session.createTextMessage("欢迎来到神奇的品优购世界");

    //8.发送消息

    producer.send(textMessage);

    //9.关闭资源

    producer.close();

    session.close();

    connection.close();

    运行效果如下:

    2.2.2消息消费者

    创建类TopicConsumer ,main方法代码如下:

    //1.创建连接工厂

    ConnectionFactory connectionFactory=new ActiveMQConnectionFactory("tcp://192.168.25.135:61616");

    //2.获取连接

    Connection connection = connectionFactory.createConnection();

    //3.启动连接

    connection.start();

    //4.获取session  (参数1:是否启动事务,参数2:消息确认模式)

    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

    //5.创建主题对象

    //Queue queue = session.createQueue("test-queue");

    Topic topic = session.createTopic("test-topic");

    //6.创建消息消费

    MessageConsumer consumer = session.createConsumer(topic);

     

    //7.监听消息

    consumer.setMessageListener(new MessageListener() {

    public void onMessage(Message message) {

    TextMessage textMessage=(TextMessage)message;

    try {

    System.out.println("接收到消息:"+textMessage.getText());

    } catch (JMSException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    }

    });

    //8.等待键盘输入

    System.in.read();

    //9.关闭资源

    consumer.close();

    session.close();

    connection.close();

    2.2.3运行测试

    同时开启2个以上的消费者,再次运行生产者,观察每个消费者控制台的输出,会发现每个消费者会接收到消息。

     

     

     

    完毕!留个赞再走呗 (* ̄︶ ̄) !

     

     

     

  • 相关阅读:
    computed的用法
    地址列表展开功能/默认选中功能
    简易编辑器
    用vue做todolist
    用vue做的购物车结算的功能
    如果数据返回没有那个字段,怎么加上去?
    vue中全局filter和局部filter怎么用?
    editorconfig
    eslint 配置
    react typescript 单元测试
  • 原文地址:https://www.cnblogs.com/hxun/p/11245987.html
Copyright © 2020-2023  润新知