
ActiveMQ、Shiro
HernSong
HernSong
展开
-
究竟什么时候该使用MQ
声明:以下文章来源于架构师之路,作者58沈剑任何脱离业务的组件引入都是耍流氓。引入一个组件,最先该解答的问题是,此组件解决什么问题。MQ是什么消息总线(Message Queue),后文称MQ,是一种跨进程的通信机制,用于上下游传递消息。画外音:这两个进程,一般不在同一台服务器上。在互联网架构中,MQ经常用做“上下游解耦”:消息发送方只依赖MQ,不关注消费方是谁; 消...转载 2020-02-25 20:16:03 · 364 阅读 · 0 评论 -
消息队列 ActiveMQ 、RocketMQ 、RabbitMQ 和 Kafka 对比
消息队列(MQ)在百度百科中,消息队列(MQ)是这么解释的:“消息队列”是在消息的传输过程中保存消息的容器(可存可取)。它是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰和降低系统耦合性。 异步处理:多应用对消息队列中同一消息进行处理,应用间并发处理消息,相比较串行处理,减少处理时间; 应用耦合:多应用通过消息队列对同一消息进行处理,避免调用接...原创 2020-01-03 23:06:05 · 595 阅读 · 0 评论 -
Shiro记住我(RememberMe)
简介Shiro 提供了记住我(RememberMe)的功能,比如访问如淘宝 等一些网站时,关闭了浏览器,下次再打开时还是能记住你是谁, 下次访问时无需再登录即可访问,基本流程如下: •登录页面选中RememberMe然后登录成功;如果是浏览器登录,一般会把RememberMe 的Cookie写到客户端并保存下来; 关闭浏览器再重新打开;会发现浏览器还是记住你的; 访问一般的网页服务器端...转载 2019-12-17 17:20:54 · 6301 阅读 · 0 评论 -
消息队列定义
什么是消息队列消息队列,一般我们会简称它为MQ(Message Queue),先不管消息(Message)这个词,来看看队列(Queue)。队列是一种先进先出的数据结构:在Java里边,已经实现了不少的队列了(Java的队列实现类):消息队列可以简单理解为:把要传输的数据放在队列中。科普: 把数据放到消息队列叫做生产者 从消息队列里边取数据叫做消费者 ...原创 2019-11-17 21:47:17 · 554 阅读 · 0 评论 -
Shiro集成Spring
加入 Spring 和 Shiro 的 jar 包 配置 Spring 及 SpringMVC 参照:1.3.2\shiro-root-1.3.2-sourcerelease\shiro-root-1.3.2\samples\spring 配置 web.xml 文件和 Spring 的配置文件 在WEB-INF下的Web.xml中配置Spring的contextConfigLocation:...转载 2019-10-22 20:39:43 · 291 阅读 · 0 评论 -
MQ保证消息的顺序性
举例以前做过一个 mysqlbinlog同步的系统,压力还是非常大的,日同步数据要达到上亿,就是说数据从一个 mysql 库原封不动地同步到另一个 mysql 库里面去(mysql -> mysql)。常见的一点在于说比如大数据 team,就需要同步一个 mysql 库过来,对公司的业务系统的数据做各种复杂的操作。你在 mysql 里增删改一条数据,对应出来了增删改 3 条bi...转载 2019-10-17 14:02:31 · 1461 阅读 · 0 评论 -
Shiro认证和记住我的区别
subject.isAuthenticated() :表示用户进行了身份验证登录的, 即使有 Subject.login 进行了登录; subject.isRemembered():表示用户是通过记住我登录的, 此时可能并不是真正的你(如你的朋友使用你的电脑,或者 你的cookie 被窃取)在访问的 。 两者二选一,即 subject.isAuthenticated()==true,则 sub...原创 2019-09-06 14:58:31 · 744 阅读 · 0 评论 -
Shiro缓存
CacheManagerAware接口Shiro中提供了一个CacheManagerAware接口,实现此接口的类都可以进行缓存的一些基础操作。同理也即是说Realm实现了CacheManagerAware接口就可以操作缓存。当我们的Realm实现了CacheManagerAware接口或继承了实现CacheManagerAware接口的父类的时候,在Shiro内部有组件(DefaultS...转载 2019-09-06 14:30:31 · 321 阅读 · 0 评论 -
Shiro的SessionDao
SessionDao对于分布式系统,一般都牵扯到Session共享问题,而想实现Session共享,就要实现Session的持久化操作,即是将内存中的Session持久化至缓存数据库。SessionDAO是Shiro提供的一个数据交互层的interface接口,其作用是可以将Session写入到数据库中,然后可以对Session进行增删改查操作。其中SessionDao是最...转载 2019-09-06 14:14:40 · 1320 阅读 · 0 评论 -
Shiro会话管理
注:该系列所有测试均在之前创建的Shiro3的Web工程的基础上。下面我们来说一下Shiro里面的会话管理,这个“会话”与JavaWeb里面的HttpSession是一致的,都是表示客户端与服务器的一次会话。Shiro会话概述Shiro 提供了完整的企业级会话管理功能,不依赖于底层容 器(如web容器tomcat),不管 JavaSE 还是 JavaEE 环境 都可以使用,提供了会话管...转载 2019-09-06 11:42:52 · 266 阅读 · 0 评论 -
Shiro从数据表中初始化资源和权限
之前在测试的Web工程下,我们在applicationContext.xml中配置了shiroFilter资源拦截器信息:<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="se...转载 2019-09-06 11:31:24 · 496 阅读 · 0 评论 -
Shiro权限注解
权限注解 @RequiresAuthentication:表示当前Subject已经通过login 进行了身份验证;即 Subject. isAuthenticated() 返回 true @RequiresUser:表示当前 Subject 已经身份验证或者通过记 住我登录的。 @RequiresGuest:表示当前Subject没有身份验证或通过记住 我登录过,即是游客身份。 @Re...转载 2019-09-05 14:29:01 · 521 阅读 · 0 评论 -
Shiro标签
Shiro 提供了 JSTL 标签用于在 JSP 页面进行权限控制,如根据登录用户显示相应的页面按钮。注意:在使用shiro标签时,应该首先在jsp页面添加shiro库:<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>shiro标签种类:guest 标签:用户没有身份验证时显示相应信息,即...转载 2019-09-05 11:47:56 · 249 阅读 · 0 评论 -
Shiro授权流程
授权流程如下:首先调用 Subject.isPermitted*/hasRole* 接口,其会委托给 SecurityManager,而 SecurityManager 接着会委托给 Authorizer; Authorizer是真正的授权者,如果调用如 isPermitted(“user:view”),其首先会通过 • PermissionResolver 把字符串转换成相应的 Per...转载 2019-09-05 11:31:06 · 317 阅读 · 0 评论 -
Shiro授权
授权 • 授权,也叫访问控制,即在应用中控制谁访问哪些资源(如访问页面/编辑数据/页面操作 等)。在授权中需了解的几个关键对象:主体(Subject)、资源(Resource)、权限 (Permission)、角色(Role)。主体(Subject):访问应用的用户,在 Shiro 中使用 Subject 代表该用户。用户只有授权 后才允许访问相应的资源。 资源(Resource):在应...转载 2019-09-05 11:10:17 · 314 阅读 · 0 评论 -
Shiro实现多Realm认证、SecurityManager配置realms
认证策略实际上是AuthenticationStrategy这个接口,它有三个实现:• AuthenticationStrategy 接口的默认实现:• FirstSuccessfulStrategy:只要有一个 Realm 验证成功即可,只返回第 一个 Realm 身份验证成功的认证信息,其他的忽略;• AtLeastOneSuccessfulStrategy:只要有一个Realm验...转载 2019-09-04 20:12:24 · 2540 阅读 · 0 评论 -
Shiro密码的MD5加密、MD5盐值加密
密码的MD5加密用MD5加密算法后,前台用户输入的字符串如何使用MD5加密,需要做的是将当前的Realm 的credentialsMatcher属性,替换为Md5CredentialsMatcher 由于Md5CredentialsMatcher已经过期了,推荐使用HashedCredentialsMatcher 并设置加密算法即可。<!-- 3.配置Rea...转载 2019-09-04 19:39:41 · 1563 阅读 · 0 评论 -
Shiro密码比对、CrendentialsMatcher组件作用
认证需要的Realm类,该Realm类继承了AuthenticatingRealm父类,实现了doGetAuthenticationInfo方法,在doGetAuthenticationInfo方法中获取用户的账号密码,在做完一些校验后,传递给了SimpleAuthenticationInfo,并返回出去:package com.test.shiro.realms;import java....转载 2019-09-04 14:57:49 · 796 阅读 · 0 评论 -
Shiro认证
Shiro 架构(Shiro外部来看) 从外部来看Shiro ,即从应用程序角度的来观察如何使用 Shiro 完成 工作:身份验证 • 身份验证:一般需要提供如身份 ID 等一些标识信息来表明登录者的身 份,如提供 email,用户名/密码来证明。• 在 shiro 中,用户需要提供 principals (身份)和 credentials(证 明)给 shiro,从而应用能验...原创 2019-09-03 21:07:25 · 374 阅读 · 0 评论 -
ShiroFilter工作原理、支持的过滤器、URL 匹配模式、URL 匹配顺序
ShiroFilter工作原理Shiro提供了与Web集成的支持,其通过一个ShiroFilter入口来拦截需要安全控制的URL,然后进行相应的控制,ShiroFilter类似于如Strut2/SpringMVC这种web框架的前端控制器,其是安全控制的入口点,其负责读取配置(如ini配置文件),然后判断URL是否需要登录/权限等工作。而要在Spring中使用Shiro的话,可在web...原创 2019-08-30 16:04:31 · 1458 阅读 · 0 评论 -
Shiro简单实现HelloWorld
点击进入Shiro 下载官网1、所需jar包shiro-all-1.4.1.jar、log4j-1.2.17.jar、slf4j-api-1.7.28.jar、slf4j-log4j12-1.7.28.jar2、导入以下两个文件(文件位于shiro-root-source-release\shiro-root\samples\quickstart\src\main\resources文...原创 2019-08-29 16:40:04 · 297 阅读 · 0 评论 -
Shiro简介、功能、架构
Shiro简介• Apache Shiro 是 Java 的一个安全(权限)框架。• Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE 环境,也可以用在 JavaEE 环境。• Shiro 可以完成:认证、授权(权限验证)、加密、会话管理、与Web 集成、缓存等。Shiro基本功能• Authentication:身份认证/登录,验证用户是不是拥有...原创 2019-08-29 15:12:06 · 697 阅读 · 0 评论 -
ActiveMQ异步发送(异步投递)
同步发送ActiveMQ官方说异步发送是很多模式下默认的传输方式,但是在发送非事物持久化消息的时候默认使用的是同步发送模式。同步发送时,Producer.send() 方法会被阻塞,直到 broker 发送一个确认消息给生产者,这个确认消息暗示生产者 broker 已经成功地将它发送的消息路由到目标目的并把消息保存到二级存储中。同步发送持久消息能够提供更好的可靠性,但这潜在地影响了程序的响...原创 2019-08-21 14:03:39 · 2664 阅读 · 4 评论 -
ActiveMQ消息持久化机制之JDBC With Journal
简介为了在ActiveMQ V4.x中实现持久消息传递的高性能,我们强烈建议您使用我们的高性能日志 - 默认情况下已启用。这很像一个数据库消息(以及transcation提交/回滚和消息确认)以尽可能快的速度写入日志 - 然后每隔一段时间我们将日志检查到长期持久性存储(在本例中为JDBC)。它在使用队列时很常见,例如消息在发布后很快消耗掉;因此,您可以发布10,000条消息,并且只有一些...原创 2019-08-21 13:36:05 · 1136 阅读 · 0 评论 -
ActiveMQ消息持久化
ActiveMQ持久化机制为了避免意外宕机以后丢失信息,需要做到重启后可以恢复消息队列,消息系统一般都会采用持久化机制,即:若MQ挂了,消息不会消失的机制 。ActiveMQ的消息持久化机制JDBC、AMQ、KahaDB、LevelDB,无论使用哪种持久化方式,消息的存储逻辑都是一致的。在发送者将消息发送出去后,消息中心首先将消息存储到本地数据文件、内存数据库或远程数据库等再试图...原创 2019-08-20 19:59:22 · 11285 阅读 · 2 评论 -
ActiveMQ——NIO传输协议及其性能优化(采用Auto+NIO传输模式)
注意:在更改传输协议之前,必须保证ActiveMQ没有运行!简介NIO Transport与常规TCP传输非常相似。不同之处在于它是使用NIO API实现的,它可以帮助提高性能和可扩展性。NIO仅是服务器端传输选项。尝试在客户端使用它将实例化常规TCP传输。要从TCP切换到NIO,只需更改URI的方案部分。这是在代理的XML配置文件中定义的示例:<broker>...原创 2019-08-10 18:38:17 · 3814 阅读 · 0 评论 -
详解ActiveMQ的传输协议种类
注意:ActiveMQ允许客户端使用多种协议来连接,配置Transport Connector的文件在activeMQ安装目录的conf/activemq.xml中的<transportConnectors>标签之内。官方默认提供的: <transportConnectors> <!-- DOS protection, limit concurren...原创 2019-08-10 17:29:48 · 4508 阅读 · 0 评论 -
PooledConnectionFactory或CachingConnectionFactory在MQ中那个更好
PooledConnectionFactory和CachingConnectionFactory之间的区别是不同的实现.以下是它们之间不同的一些特征:>尽管PooledConnectionFactory和CachingConnectionFactory都声明它们是每个池连接,会话和生成器,但PooledConnectionFactory实际上并没有创建多个生产者的缓存.当请求一个缓存生成...转载 2019-08-09 23:16:00 · 2099 阅读 · 0 评论 -
Spring整合ActiveMQ之监听器配置
简介在EJB世界里,JMS消息最常用的功能之一是用于实现消息驱动Bean(MDB)。Spring提供了一个方法来创建消息驱动的POJO(MDP),并且不会把用户绑定在某个EJB容器上。通常用消息监听器容器从JMS消息队列接收消息并驱动被注射进来的MDP。消息监听器容器负责消息接收的多线程处理并分发到各MDP中。一个消息侦听容器是MDP和消息提供者之间的一个中介,用来处理消息接收的注册,事务...原创 2019-08-09 22:58:33 · 2624 阅读 · 0 评论 -
Spring整合ActiveMQ发布者/订阅者模型(Topic主题生产消费)
注意:发布者/订阅模型应该先启用消费者,在启用生产者。1、添加Spring整合ActiveMQ的jar包必须包含的jar包:activemq-pool、spring-jms、xbean-spring!<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/...原创 2019-08-09 18:21:21 · 481 阅读 · 0 评论 -
Spring整合ActiveMQ点对点(队列)模型(Queue)
1、添加Spring整合ActiveMQ的jar包必须包含的jar包:activemq-pool、spring-jms、xbean-spring!<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="htt...原创 2019-08-07 00:27:06 · 373 阅读 · 0 评论 -
ActiveMQ内置Broker启动方式
前言ActiveMQ除了可以作为独立进程单独部署在服务器上之外,也可以很小巧的内嵌在程序中启动,下面我们来简单的介绍内置Broker启动的几种方式。首先准备工作还是需要准备好activemq、jackson的jar包,请自行配置,不多赘述: <!--ActiveMQ模块--> <!-- https://mvnrepository.com/...转载 2019-08-06 22:37:09 · 753 阅读 · 0 评论 -
ActiveMQ的消息签收机制
消费者客户端成功接收一条消息的标志是:这条消息被签收。消费者客户端成功接收一条消息一般包括三个阶段:消费者接收消息,也即从MessageConsumer的receive方法返回 消费者处理消息 消息被签收注意:第三阶段的签收可以有ActiveMQ发起,也可以由消费者客户端发起,取决于Session是否开启事务以及签收模式的设置。在带事务的Session中,消费者客户端事务提交之时,消...转载 2019-08-04 23:06:00 · 829 阅读 · 0 评论 -
ActiveMQ事务与三种签收方式
ActiveMQ添加事务添加事务主要注意两点:1.修改Session配置,启用事务/** * 3.通过Connection对象创建Session会话(上下文环境对象),用于接收消息。 * 参数1:是否启用事务 * 参数2:签收模式,一般设置为自动签收 */Session session = connection.createSession(Boolean.TRUE...转载 2019-08-04 23:01:52 · 1675 阅读 · 0 评论 -
消息可靠性持久化与非持久化(topic)
非持久的Topic消息示例对于非持久化的消息,当发送方发送消息的时候:如果接收方不在线,则接收方永远也收不到这些消息了。如果接收方在线,则接收方会收到这些消息。1、消息发送程序import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import jav...转载 2019-08-04 22:08:12 · 815 阅读 · 0 评论 -
JMS Message消息头、消息体、消息属性
Message 接口(消息)是在消费者和生产者之间传送的对象,也就是说从一个应用程序传送到另一个应用程序。消息接口非常灵活,并提供了许多方式来定制消息的内容。一个消息有三个主要部分:消息头(Header,必须):包含用于识别和为消息寻找路由的操作设置,所有类型的这部分格式都是一样的。 消息体(Body,可选、一个):指我们具体需要消息传输的内容,允许用户创建五种类型的消息(文本消息,映射...原创 2019-08-02 22:49:06 · 4837 阅读 · 1 评论 -
Queue与Topic区别
队列(Queue)和主题(Topic)是JMS支持的两种消息传递模型:1、点对点(point-to-point,简称PTP)Queue消息传递模型: 通过该消息传递模型,一个应用程序(即消息生产者)可以向另外一个应用程序(即消息消费者)发送消息。在此传递模型中,消息目的地类型是队列(即Destination接口实现类实例由Session接口实现类实例通过调用其createQueue...转载 2019-08-02 18:01:02 · 337 阅读 · 0 评论 -
JMS发布者/订阅者模型
发布者/订阅者模型(类似于微信公众号订阅)发布者/订阅者模型支持向一个特定的消息主题发布消息。0或多个订阅者可能对接收来自特定消息主题的消息感兴趣。在这种模型下,发布者和订阅者彼此不知道对方。这种模式好比是匿名公告板。这种模式被概括为:多个消费者可以获得消息。在发布者和订阅者之间存在时间依赖性。发布者需要建立一个订阅(subscription),以便客户能够订阅。订阅者必须保持持续的活...原创 2019-08-02 18:00:37 · 575 阅读 · 0 评论 -
JMS点对点(队列)模型
点对点(队列)模型在点对点或队列模型下,一个生产者向一个特定的队列发布消息,一个消费者从该队列中读取消息。这里,生产者知道消费者的队列,并直接将消息发送到消费者的队列。这种模式被概括为:只有一个消费者将获得消息。生产者不需要在接收者消费该消息期间处于运行状态,接收者也同样不需要在消息发送时处于运行状态。每一个成功处理的消息都由接收者签收。JMS开发的基本步骤1、创建一个 c...原创 2019-08-02 17:05:52 · 462 阅读 · 0 评论 -
JMS对象模型
JMS定义JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。JMS是一种与厂商无关的 API,用来访问收发系统消息,它类似于JSBC(Java Datab...原创 2019-08-01 21:42:02 · 586 阅读 · 0 评论