ActiveMQ 消息管理 JVM调优 火推1909

2023-10-09 01:59

本文主要是介绍ActiveMQ 消息管理 JVM调优 火推1909,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ActiveMQ 消息管理(机制)

ActiveMQ简介
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现.
JMS 简介
  • JMS(Java Message Service),即:java消息服务应用程序接口。
  • 是Java平台面向消息中间件(MOM)的API/技术规范。
  • 场景:应用与两个应用程序之间,或者分布式系统架构中分发消息,可进行异步/同步方式的通讯,和平台API无关,基本多数的MOM都提供对JMS的支持
JMS 体系架构
  • JMS提供者

    连接面向消息中间件的,JMS接口的一个实现。提供者可以是Java平台的JMS实现,也可以是非Java平台的面向消息中间件的适配器。

  • JMS客户

    生产或消费基于消息的Java的应用程序或对象。

  • JMS生产者

    创建并发送消息的JMS客户。

  • JMS消费者

    接收消息的JMS客户。

  • JMS消息

    包括可以在JMS客户之间传递的数据的对象。

  • JMS队列

    一个容纳那些被发送的等待阅读的消息的区域。与队列名字所暗示的意思不同,消息的接受顺序并不一定要与消息的发送顺序相同。一旦一个消息被阅读,该消息将被从队列中移走。

  • JMS主题

    一种支持发送消息给多个订阅者的机制。

JMS 属性
  • Destination(接口/目标)
  • Product(生产者)
  • Consumer(消费者)
  • Broker(消息转发器)
  • P2P,Pub/Sub(模型)
  • P2P:消息队列(Queue)、发送者(Sender)、接收者(Receiver)

    Pub/Sub:主题(Topic)、发布者(Publisher)、订阅者(Subscriber)
    
ActiveMQ与JMS关系
JMS是一种规范
ActiveMQ是JMS规范的一种实现
AvtiveMQ架构图

CKHAxGQ.png

ActiveMQ主要特性
(1)JMS1.1、J2EE1.4
(2)J2EE servers(Tomcat,JBoss4,GlassFish,WebLogic…)
(3)多语言客户端(Java,C,C++,C#,Ruby,PhP)
(4)多种协议(VM,TCP,SSL,UDP,multicast,JGroups…)
(5)Spring
(6)Ajax
(7)CXF,Axis(WebService的两个流行的框架)
(8)REST(状态传递)
(9)Message Groups,Virtual Destinations,Wildcards,Composite , Destinations
(10)持久化(journal,JDBC)
(11)性能(client-server,cluster,peer…)
ActiveMQ功能
- 多种协议
- 持久化
- 安全
- 集群
- 监控
- 其他
AvtiveMQ多种协议

URI: scheme:scheme-specific-part

eg:

VM vm://brokername 
TCP tcp://host:port 
SSL ssl://host:port 
HTTP http://host:port 
UDP udp://host:port 
peer   peer://group/brokername 
multicast multicast://IPAddress
static static(list uris) 
failover failvoer(list uris)
discovery discovery://host:port
ActiveMQ持久化

日志:

<journaledJDBC journalLogFiles="5"dataDirectory="../mq-data" />

数据库:

包括: Derby,HSQL,MySQL,SQLServer, Sybase,DB2,Oracle…<journaledJDBC  dataSource="#mysql-ds"/>
ActiveMQ安全

认证

simpleAuthenticationPlugin
jaasAuthenticationPlugin

授权

authorizationPlugin
ActiveMQ集群
  • Master/Slave

  • Network of Brokers

DGAokJv.png

ActiveMQ监控
  • JMX(Java管理扩展框架)

  • Advisory Message(通知消息)

Queue与Topic区别

Ms0Qc8e.png

使用ActiveMQ作为实现JMS中间件优点
1.多种语言和协议编写客户端。语言: Java, C, C++, C#, Python, PHP。
2.完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)
3.对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性
4.完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)
5.通过了常见J2EE服务器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上
6.支持多种传送协议
7.从设计上保证了高性能的集群,客户端-服务器,点对点
8.支持Ajax
9.支持与Axis的整合
10.可以很容易得调用内嵌JMS provider,进行测试
ActiveMQ关键词
  • ActiveMQConnectionFactory:

    实现了jms的ConnectionFactory,Connection的工厂类 
    
  • Connection :

    JMS连接,和Java连接池的Connection差不多  Producer和Consumer用来和Broker通讯的 
    
  • Session :

    会话 
    
  • Destination :

    目的地,数据要发送到哪里或者从哪里取 
    
  • MessageProducer:

    生产者 
    
  • MessageConsumer :

    消费者 
    
  • Message :

    消息,add到队列的东西,也就是自己要处理的东西,Message有很多子接口,TextMessage或ByteMessage
    
ActiveMQ目录说明
bin:存放的是脚本文件
conf :存放的是基本配置文件     
data :存放的是日志文件
docs :存放的是说明文档
examples :存放的是简单的实例
lib :存放的是activemq所需jar包
webapps :用于存放项目的目录
ActiveMQ应用场景

ToDNdUy.png

ehUC9h4.png

ActiveMQ入门案例1
  • 创建web project工程

  • 引入MQ相关jar包

    activeio-core-3.1.4.jaractivemq-all-5.13.2.jaractivemq-pool-5.13.2.jarcommons-pool2-2.4.2.jar
    
  • 创建生产者

    /*** 消息的生产者(提供者),用于发送消息* @author likang* @date   2017-12-21 上午9:55:47*/
    public class Product {private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;//使用默认的用户名private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;//默认的密码private static final String URL = ActiveMQConnection.DEFAULT_BROKER_URL;//默认的连接地址public static void main(String[] args) {ConnectionFactory connectionFactory ;//连接工厂Connection connection;//连接Session session;//会话Destination destination;//消息目标MessageProducer messageProducer;//消息的生产者connectionFactory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, URL);//初始化连接工厂try {connection = connectionFactory.createConnection();//创建连接connection.start();//启动连接信息/*** boolean参数1:如果是true,则代表开启事务。参数2则可以取以下前3种*                         如果是false,则代表不开启事务。参数2则可以取以下4种* * int 参数2:AUTO_ACKNOWLEDGE---客户端无需做任何副本操作,就可以获取消息信息(自动装配模式)*          CLIENT_ACKNOWLEDGE---客户端需要做操作确认,才可以获取消息*          DUPS_OK_ACKNOWLEDGE---是无需任何副本操作*          SESSION_TRANSACTED----只有在第一个参数使用false的时候,才可以使用* */session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);destination = session.createQueue("java12");//选择协议主题,并且初始化主题名称messageProducer = session.createProducer(destination);//创建生产者sendMessage(messageProducer,session);//发送消息session.commit();//提交消息到MQ容器中} catch (Exception e) {}}/*** 发送消息内容* @param messageProducer* @param session* @throws JMSException */private static void sendMessage(MessageProducer messageProducer,Session session) throws JMSException {for (int i = 0; i < 10; i++) {TextMessage tx = session.createTextMessage("ActiveMQ 发送消息" + i);System.out.println("生产者发送消息内容为:" + tx.getText());messageProducer.send(tx);}}
    }
    
  • 创建消费者

    /*** 消息的接受者(消费者)* @author likang* @date   2017-12-21 上午10:12:37*/
    public class Columer {private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;//使用默认的用户名private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;//默认的密码private static final String URL = ActiveMQConnection.DEFAULT_BROKER_URL;//默认的连接地址public static void main(String[] args) {ConnectionFactory connectionFactory ;//连接工厂Connection connection;//连接Session session;//会话Destination destination;//消息目标MessageConsumer messageConsumer;//消息的消费者connectionFactory = new ActiveMQConnectionFactory(USERNAME, PASSWORD, URL);//初始化连接工厂try {connection = connectionFactory.createConnection();//创建连接connection.start();//启动连接信息session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);destination = session.createQueue("java12");//选择协议主题,并且初始化主题名称messageConsumer = session.createConsumer(destination);//创建消费者while(true){
    //              TextMessage tx = session.createTextMessage();//接收消息TextMessage tx = (TextMessage) messageConsumer.receive(1000000);//100Sif (tx != null) {System.out.println("消费者接收消息内容为:"+tx.getText());}else{break;}}} catch (Exception e) {}}
    }
    
  • 启动ActiveMQ服务

    双击启动服务

  • 运行生产者

    执行main方法
    
  • 运行消费者

    执行main方法
    
  • 进入ActiveMQ后台监控系统

    地址:http://localhost:8161/admin/queues.jsp

ikclalR.png

  • 观察运行结果
ActiveMQ入门案例2(集成spring)
  • 创建一个web project工程

  • 导入所需jar包

  • 增加配置文件信息

    web.xml、spring-mvc.xml、applicationContext.xml、ActiveMQ.xml
    
  • 增加ActiveMQ配置文件信息

    配置ActiveMQ的连接工厂
    配置Spring 的Cache工厂
    定义JmsTemplate的Queue类型 
    定义JmsTemplate的Topic类型
    定义Queue监听
    定义Topic监听
    
  • 测试地址

    URL:http://localhost:8161/admin/
    前端测试页面地址:http://localhost/ActiveMQSpringDemo/index.jsp
    
常见协议汇总
  • 物理层:

    以太网·调制解调器·电力线通信(PLC)·SONET/SDH · 光导纤维等

  • 数据链路层:

    Wi-Fi(IEEE 802.11) · ATM · DTM · 令牌环·以太网· GPRS · HDLC · PPP · L2TP ·PPTP ·STP 等

  • 网络层协议:

    IP (IPv4 · IPv6) · ICMP· ICMPv6·IGMP ·IS-IS · ARP · RARP等

  • 传输层协议:

    TCP · UDP · TLS · DCCP · SCTP · RSVP 等

  • 应用层协议:

    HTTP · POP3 · RPC · DHCP · DNS · FTP · IMAP4 · IRC · XMPP · SMTP · SNMP · SSH · RTP · SOAP等

算法

负载量:

一般是取一个时间段内的负载量

并发量:

是取同一个时刻的操作人数(求平均数)

动静分离:

html----jeecms内容管理系统
css/img/js等等----负载均衡层(nginx)

算法:

MD5:对称加密:AES:更安全非对称加密:支付加密算法:RSA/RSA2

https://mp.weixin.qq.com/s?_biz=MzIxMjg4NDU1NA==&mid=2247483908&idx=1&sn=532230159d74893cb3c6d402e4552127&chksm=97be0f21a0c9863748d126999b6678b3d7c5f1bcad12f630ea24e526e6dee8cb0248808ca60b&scene=21#wechatredirect

JVM如何进行调优

M4O1RN0.png

lucene、solr全文搜索

转载于:https://my.oschina.net/u/3680357/blog/1626506

这篇关于ActiveMQ 消息管理 JVM调优 火推1909的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/169540

相关文章

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

gradle第三方Jar包依赖统一管理方式

《gradle第三方Jar包依赖统一管理方式》:本文主要介绍gradle第三方Jar包依赖统一管理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景实现1.顶层模块build.gradle添加依赖管理插件2.顶层模块build.gradle添加所有管理依赖包

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.