IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> activemq下载安装(windows版)与实例创建,JMS模型介绍 -> 正文阅读

[系统运维]activemq下载安装(windows版)与实例创建,JMS模型介绍

关于activemq

activemq全名Apache ActiveMQ,是Apache下的开放源代码的消息中间件;由于ActiveMQ基于java语言开发,因此只需要操作系统支持Java虚拟机,配置java环境,ActiveMQ便可执行。
Apache ActiveMQ是最流行的开源、多协议、基于 Java 的消息代理。支持行业标准协议,因此用户可以在各种语言和平台的客户端中选择。从用 多种语言编写的客户端连接。使用AMQP协议集成多平台应用程序。ActiveMQ 是支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。
在代码开发中,使用JMS编程模型,案例代码在后面

何谓JMS?

JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
JMS是一种与厂商无关的 API,用来访问收发系统消息,它类似于JDBC(Java Database Connectivity)。这里,JDBC 是可以用来访问许多不同关系数据库的 API,而 JMS 则提供同样与厂商无关的访问方法,以访问消息收发服务。许多厂商都支持 JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ。 JMS 使您能够通过消息收发服务(有时称为消息中介程序或路由器)从一个 JMS 客户机向另一个 JMS客户机发送消息。消息是 JMS 中的一种类型对象,由两部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带着应用程序的数据或有效负载。根据有效负载的类型来划分,可以将消息分为几种类型,它们分别携带:简单文本(TextMessage)、可序列化的对象 (ObjectMessage)、属性集合 (MapMessage)、字节流 (BytesMessage)、原始值流 (StreamMessage),还有无有效负载的消息 (Message)。

activemq的下载链接:https://activemq.apache.org/components/classic/download/

Windows版下载与使用

1.进入链接地址,选择你需要下载的版本,我们这里下载的是当前最新版本
在这里插入图片描述
2.下载完成之后,解压压缩包到指定目录,如图
在这里插入图片描述
3.进入bin目录,可选32位或者64位,我的机器为64位,因此进入对应目录,双击activemq.bat启动服务,默认端口8161
在这里插入图片描述
4.管理界面:localhost:8161,默认用户密码都是admin
在这里插入图片描述
这里是我之前创建的一个新的队列,并批量插入了100条消息,并对参数进行说明
在这里插入图片描述

消息模型topic和queue

topic和queue是JMS的两种消息模型,Destination接口其中的两个实现类实例,可通过Session接口的实现类实例来创建,生产者代码如下,这里我创建的目的地类型为queue

@SuppressWarnings("all")
public class Sender {

    public static void main(String[] args) throws Exception {
        //1.获取连接工厂,输入用户名密码
        ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory("admin","admin","tcp://localhost:61616");
        //2.获取一个向Activemq的连接
        Connection connection = activeMQConnectionFactory.createConnection();
        connection.start();
        //3.获取session(参数:是否开启事务,确认机制)
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        //4.找目的地,获取destination,消费端也会从这个目的地取消息
        Destination queue = session.createQueue("user");
        //5.producer::消息创建者
        MessageProducer producer = session.createProducer(queue);
        //6.是否持久化消息,默认PERSISTENT
        //producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
        TextMessage textMessage;
        //7.向目的地(queue)写入消息
        for (int i = 0; i < 100; i++) {
            textMessage = session.createTextMessage("第" + i + "条消息");
            producer.send(textMessage);
            Thread.sleep(3000);
            //session.commit();
        }
        //6.关闭连接
        connection.close();
        System.out.println("System.exit..............");
    }

}

队列(Queue)和主题(Topic)是JMS支持的两种消息传递模型
queue点对点(point-to-point)的消息传递与消费方式,消息目的地为queue,可同时存在多个provider(消息生产者)和多个consumer(消费者),消息首先传送到指定队列中,一条消息只能被一个消费者所消费,该消息传递模型为轮询,消息不是主动发送给消费者,而是消费者监听队列并请求获取消息,多个消费者轮流获得某个队列对消息。
当消费者不存在时,消息会一直保存,直到有消费者消费掉
在这里插入图片描述

topic发布/订阅(pub/sub)的消息传递消费方式,消息目的地为topic,也包含多个消费者与生产者,消息将会发送到订阅同一主题的多个消费者,相当于在同一会议室在听的领导发言,那么迟到的成员就听不到发言了。注意在该模型中,消息是自动广播,消费者无需主动请求或者轮询方式去获取消息。
当生产者发布消息,不管是否有消费者。都不会保存消息 一定要先有消息的消费者,后有消息的生产者。
在这里插入图片描述

JMS消息模型对比

typetopicqueue
有无状态无状态,topic数据默认不落地,queue消息默认在mq服务器上以文件形式保存,activemq中,数据保存在data目录的kahadb下,也可以持久化到DB存储,在conf目录下的activemq.xml文件中加入数据源
完整性不能保证每条消息Subscriber都能接收到可以保证每条数据都能被接收到,消息可以设置超时或者不超时
消息是否会丢失一般,message发布之后,只有正在监听该topic的接收者才能够接收到message发送到目的地queue,consumer可以异步接收到消息,如果暂时未取出消息,在不超时前提下,不会丢失,Number Of Pending Messages为未出队的消息数量
发布接受策略一对多的发布接受策略一对一的发布接受策略,消费完毕的message采取删除或其他操作

期待与大家交流,可以在博客私信我哦。
感谢阅读,原创文本,如有不正确的地方请指教!
如果这篇文章有帮到你,记得点赞支持下哦

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-22 13:52:26  更:2021-08-22 13:52:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 19:35:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计