iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >SpringBoot JMS中ActiveMQ的API实践应用是怎样的
  • 200
分享到

SpringBoot JMS中ActiveMQ的API实践应用是怎样的

2024-04-02 19:04:59 200人浏览 八月长安
摘要

今天就跟大家聊聊有关SpringBoot JMS api的实践应用是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 前言Active

今天就跟大家聊聊有关SpringBoot JMS api的实践应用是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

 前言

Active是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信。AC-tiveMQ使用Apache提供的授权,任何人都可以对其实现代码进行修改。

ActiveMQ的设计目标是提供标准的,面向消息的,能够跨越多语言和多系统的应用集成消息通信中间件。ActiveMQ实现了JMS标准并提供了很多附加的特性。

1. JMS的概念?

「什么是JMS呢:」

  • JMS---------JAVA Message Service

  • JAVA的消息服务,是sun公司提供的接口,只是一个规范,这个规范就类似于JDBC是一样的,使用的时候是需要当前规范的实现产品的。

「JMS能干什么呢:」

  • 能够将信息发布到目的地

  • 可以从目的地来消费这个消息

2、两种通信模型

「队列的通信概念:」

  • 特点:当我们同一个队列有多个消费者的时候,多个消费者的数据之和才是原来队列中的所有数据

  • 队列的通信模型最大的适用场景:流量的消峰,高并发的处理

「主题的通信模型:」

  • 特点:当我们队列有多个消费者的时候,那么这多个消费者消费到的数据是一样的

  • 主题消费者通信模型的适用场景:微服务下服务之间的异步通信

3. MQ的实现产品

「实现产品:」

4、JMS中常见的名词

「常见的名词:」

  • ActiveMQConnectionFactory:这个是创建连接的工厂

  • ConnectionFactory:连接的工厂

  • Connection:连接JAVA对MQ的一个连接

  • Destination:目的地

  • 生产者(Producer)

  • 消费者(Consumer)

  • Session:会话(每一次对MQ的操作都称为一次会话)

  • Queue:队列

  • Topic:主题

5、什么是消息队列

「消息队列简单的说就是用来存放临时数据的地方:」

  • 生产者----------->存储介质上

  • 消费者----------->存储介质上

「消息队列类似于快递公司:」

  • 你可以将东西交给快递公司

  • 目标人也可以从快递公司去取东西

6. ActiveMQ是什么

「含义:」

  • ActiveMQ就是一个JMS的实现产品,它能够实现JMS下的所有功能

7、ActiveMQ能干什么

「主要作用:」

  • 流量消峰处理

  • 微服务下模块的异步通信

  • 处理高并发下的订单

  • 处理第三方平台的高并发

  • 协助消息表可以完成分布式事务的最终一致性

8、ActiveMQ的安装

「ActiveMQ的安装和配置:」

 1、官网下载linux版的ActiveMQ(最新版本为5.13.4)        https://activemq.apache.org/download.html         2、解压安装       tar -zxvf apache-activemq-5.13.4-bin.tar.gz         3、配置(这里采用默认配置,无需修改)       vim /usr/lical/activemq-1/conf/activemq.xml         4、启动       cd /usr/local/activemq-1/bin ./activemq start        5、打开管理界面(管理界面可以查看并管理所有队列及消息)          Http://192.168.1.100:8161         启动成功后,可以浏览 http://localhost:8161/admin/        默认用户名、密码:admin/admin        管理界面是用jetty做容器的,如果想修改管理界面的端口,可以编辑../conf/jetty.xml,找到下面这一段:       <bean id="jettyPort" class="org.apache.activemq.WEB.WebConsolePort" init-method="start">     <!-- the default port       number for the web console -->     <property name="host" value="0.0.0.0"/>     <property name="port" value="8161"/>      </bean>        用户名/密码是在 ../conf/jetty-realm.properties 里,比如要增加一个管理员jimmy/123456,可参考下面修改:        1 2 3admin: admin, admin jimmy: 123456, admin user: user, user        注:管理界面有一个小坑,ActiveMQ 5.13.2与jdk1.8兼容性有点问题,如果使用jdk1.8,管理界面进入Queues标签页时,偶尔会报错,但是并不影响消息正常收发,只是无法从界面上查看队列情况,如果出现该问题,可将jdk版本降至1.7,同时最好清空data目录下的所有数据,再重启activemq即可。

9. ActiveMQ的API的使用

「AcatveMQ的API使用:」

  • 队列的使用(生产者)

package com.qy.mq.queue;  import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.Message;  import javax.jms.*;   public class Producer {      //准备发布的这个地址     private  static final String PATH="tcp://10.7.182.87:61616";     //ActiveMQ下的用户名     private static final String userName="admin";     //ActiveMQ下的密码     private static final String passWord="admin";      public static void main(String[] args) throws JMSException {         //第一步:创建连接的工厂         ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(userName, password, PATH);         //通过这个工厂获取连接         Connection connection = activeMQConnectionFactory.createConnection();         //第三步:打开这个连接         connection.start();         //第四步:创建操作MQ的这个会话                  Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);         //需要发送消息的目的地(queue操作的是队列)         Destination destination=session.createQueue("wqqq");         //生产者来生产这个消息         //要有生产者         MessageProducer messageProducer = session.createProducer(destination);          //发送很多的消息到消息队列中去 //        for (int i=0;i<100;i++){             //需要准备发送的消息 //            TextMessage textMessage = session.createTextMessage("我是浅羽:"+i);             //研究消息的类型                      //创建map类型的message                   ObjectMessage objectMessage = session.createObjectMessage(new User(1, "qianyu", "123"));         messageProducer.send(objectMessage);  //        }     }  }
  • 队列的使用(消费者)

package com.qy.mq.queue;  import org.apache.activemq.ActiveMQConnectionFactory;  import javax.jms.*; import java.io.Serializable;   public class Consumer {      //准备发布的这个地址     private  static final String PATH="tcp://10.7.182.87:61616";     //ActiveMQ下的用户名     private static final String userName="admin";     //ActiveMQ下的密码     private static final String password="admin";      public static void main(String[] args) throws JMSException {         //第一步:创建连接的工厂         ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(userName, password, PATH);         //通过这个工厂获取连接         Connection connection = activeMQConnectionFactory.createConnection();         //第三步:打开这个连接         connection.start();         //第四步:创建操作MQ的这个会话                  Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);         //需要发送消息的目的地(queue操作的是队列)         Destination destination=session.createQueue("wqqq");         //创建我们的消费者了         MessageConsumer messageConsumer = session.createConsumer(destination);         //接下来就可以接收我们的消息了         //Message message = messageConsumer.receive();          //接收消息并指定这个超时的时间 //      Message message = messageConsumer.receive(5000);          //接收消息没有就不等待了 直接over了  不接收了 //      Message message = messageConsumer.receiveNoWait();          //给定当前的路径设置监听器         messageConsumer.setMessageListener(new MessageListener() {             @Override             public void onMessage(Message message) {                                                    //测试对象类型的消息的发送和接收                ObjectMessage objectMessage= (ObjectMessage) message;                 try {                     User user = (User) objectMessage.getObject();                      System.out.println("接收到的数据是:"+user);                 } catch (JMSException e) {                     e.printStackTrace();                 }                                   try {                     //这句话就表示的是客户端来手动的进行应答                     message.acknowledge();                 } catch (JMSException e) {                     e.printStackTrace();                 }              }         });     } }
  • 主题模型的生产者

package com.qy.mq.topic;  import org.apache.activemq.ActiveMQConnectionFactory;  import javax.jms.*;   public class Producer {     //准备发布的这个地址     private  static final String PATH="tcp://10.7.182.87:61616";     //ActiveMQ下的用户名     private static final String userName="admin";     //ActiveMQ下的密码     private static final String password="admin";      public static void main(String[] args) throws JMSException {         //第一步:创建连接的工厂         ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(userName, password, PATH);         //通过这个工厂获取连接         Connection connection = activeMQConnectionFactory.createConnection();         //第三步:打开这个连接         connection.start();         //第四步:创建操作MQ的这个会话                  Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);         //需要发送消息的目的地(下面创建的就应该是主题模型的地址)         Destination destination=session.createTopic("topic222");         //生产者来生产这个消息         //要有生产者         MessageProducer messageProducer = session.createProducer(destination);          //发送很多的消息到消息队列中去         for (int i=0;i<100;i++){             //需要准备发送的消息             TextMessage textMessage = session.createTextMessage("我是浅羽:"+i);             //接下来就可以发送消息了             messageProducer.send(textMessage);         }     } }
  • 主题模型的消费者

package com.qy.mq.topic;  import org.apache.activemq.ActiveMQConnectionFactory;  import javax.jms.*;   public class Consumer {      //准备发布的这个地址     private  static final String PATH="tcp://10.7.182.87:61616";     //ActiveMQ下的用户名     private static final String userName="admin";     //ActiveMQ下的密码     private static final String password="admin";      public static void main(String[] args) throws JMSException {         //第一步:创建连接的工厂         ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(userName, password, PATH);         //通过这个工厂获取连接         Connection connection = activeMQConnectionFactory.createConnection();         //第三步:打开这个连接         connection.start();         //第四步:创建操作MQ的这个会话                  Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);         //需要发送消息的目的地(queue操作的是队列)         Destination destination=session.createTopic("topic222");         //创建我们的消费者了         MessageConsumer messageConsumer = session.createConsumer(destination);         //接下来就可以接收我们的消息了          //给定当前的路径设置监听器         messageConsumer.setMessageListener(new MessageListener() {             @Override             public void onMessage(Message message) {                  //我们知道是一个字符串类型的消息                 TextMessage textMessage= (TextMessage) message;                 //接下来就可以打印这个消息了                 try {                     System.out.println("消费者1---接收到的消息是:"+textMessage.getText());                 } catch (JMSException e) {                     e.printStackTrace();                 }                  try {                     message.acknowledge();                 } catch (JMSException e) {                     e.printStackTrace();                 }              }         });     } }

看完上述内容,你们对springBoot JMS API的实践应用是怎样的有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网JavaScript频道,感谢大家的支持。

--结束END--

本文标题: SpringBoot JMS中ActiveMQ的API实践应用是怎样的

本文链接: https://www.lsjlt.com/news/82094.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot JMS中ActiveMQ的API实践应用是怎样的
    今天就跟大家聊聊有关SpringBoot JMS API的实践应用是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 前言Active...
    99+
    2024-04-02
  • SpringBoot中activeMq的用法实例介绍
    本篇内容主要讲解“SpringBoot中activeMq的用法实例介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot中activeMq的用法实例介绍”吧!SpringBoot...
    99+
    2023-06-20
  • springboot应用访问zookeeper的流程是怎样的
    这期内容当中小编将会给大家带来有关springboot应用访问zookeeper的流程是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。下面讲解了如果通过springboot快速开发web服务,并读取...
    99+
    2023-06-26
  • Spring响应机制:Java API中的最佳实践?
    Spring框架是一个非常流行的Java Web应用程序开发框架,它提供了许多功能和API来简化开发过程。其中,Spring的响应机制是开发Web应用程序时必不可少的一部分。在本文中,我们将探讨Spring响应机制的最佳实践,并提供一些演...
    99+
    2023-09-21
    api spring 响应
  • kubernetes实践中的Etcd3集群搭建是怎样的
    这篇文章给大家介绍kubernetes实践中的Etcd3集群搭建是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一:Etcd简介ETCD是用于共享配置和服务发现的分布式,一致性的KV存储系统。类似于Zookeep...
    99+
    2023-06-04
  • Linux在实际中的应用是怎么样的
    本篇文章为大家展示了Linux在实际中的应用是怎么样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。各位童鞋们,你们是如何度过这周周末的呢?这周末的我在家学习学习再学习,然而学习到一半,公司领导突然...
    99+
    2023-06-05
  • TalkingData的Spark On Kubernetes实践是怎样的
    这篇文章给大家介绍TalkingData的Spark On Kubernetes实践是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。众所周知,Spark是一个快速、通用的大规模数据处理平台,和Hadoop的Map...
    99+
    2023-06-19
  • MySQL DDL操作实践是怎样的
    本篇文章给大家分享的是有关MySQL DDL操作实践是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。根据网上的DDL 树状图,自己cop...
    99+
    2024-04-02
  • PHP REST API在电商领域的应用实践
    在电商领域中,使用php构建rest api广泛应用,本文提供了实战案例。步骤如下:1. 安装php和必需库;2. 创建新项目;3. 安装和配置jwt验证;4. 定义路由;5. 创建数据...
    99+
    2024-05-11
    php rest api laravel composer
  • MySQL高可用架构的PXC实践是怎样的
    这篇文章给大家介绍MySQL高可用架构的PXC实践是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、PXC简介    官方介绍: &nb...
    99+
    2024-04-02
  • 重定向在Python API中的应用:存储数据的最佳实践是什么?
    在Python API中,重定向是一种常见的技术,用于将程序输出从标准输出流(stdout)重定向到文件中。这种技术可以用于存储程序输出和错误信息,以及记录程序运行过程中的状态和其他信息。在本文中,我们将探讨重定向的应用以及如何使用它来存...
    99+
    2023-09-13
    api 重定向 存储
  • Shell 脚本编程的实践是怎样的
    这篇文章跟大家分析一下“Shell 脚本编程的实践是怎样的”。内容详细易懂,对“Shell 脚本编程的实践是怎样的”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习“Shell 脚本编...
    99+
    2023-06-28
  • PhoneGap的应用是怎样的
    本篇文章为大家展示了PhoneGap的应用是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。PhoneGap是一套能让你使用HTML5轻松调用本地API接口和发...
    99+
    2024-04-02
  • MongoDB的应用是怎样的
    MongoDB的应用是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言偶然机会看到mongo中文社区办了场征文活动,觉得挺有意思的,虽...
    99+
    2024-04-02
  • JavaScript API中Service Worke简介是怎样的
    Service Worker JavaScript API简介是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。servi...
    99+
    2024-04-02
  • SpringBoot中的连接池是怎么样的
    这期内容当中小编将会给大家带来有关SpringBoot中的连接池是怎么样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。回想起之前在部署springboot项目到正线时,...
    99+
    2024-04-02
  • ATC实验室vSphere应用是怎样的
    本篇文章为大家展示了ATC实验室vSphere应用是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。启用HA:根据实际情况,在“高级选项”中增加以下选项:das.ignoreinsufficie...
    99+
    2023-06-04
  • vue中filter的应用场景是怎样的
    本篇文章给大家分享的是有关vue中filter的应用场景是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。filter一般用于过滤某些值,比如我这个字段是空,可是我想在前端...
    99+
    2023-06-25
  • 7个JavaScript优秀实践分别是怎样的
    今天就跟大家聊聊有关7个JavaScript优秀实践分别是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 1. 编写构造函数时,在 ...
    99+
    2024-04-02
  • PHP 中使用二维码生成 API 的最佳实践是什么?
    随着移动互联网的普及,二维码已经成为了一种非常流行的信息传递方式。在很多应用场景中,二维码都能够为我们提供极大的便利。例如,在商场购物时,我们只需要扫描商品上的二维码就可以获取商品信息和价格;在公共场所,我们只需要扫描二维码就可以获取公共...
    99+
    2023-08-27
    二维码 npm api
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作