ActionMq + mqttws3.1 实现持久化订阅】的更多相关文章

activemq版本:5.15.3 Eclipse Paho MQTT JavaScript library mqttws3.1:在amq安装目录下webapp-demo目录下可以找到 实现步骤请阅读以下几篇文章: 1.https://www.cnblogs.com/ShimizuShiori/p/5443110.html mqttws3.1实现 websocket(要实现websocket还可以使用stomp,具体可以结合amq安装路径下demo来看) 2.https://blog.csdn.…
非持久化模式下,Topic不会落地任何消息,消息入队即出队, 消费者如果想要保留离线后的消息需要告诉MQ实例,即注册过程, 代码上大概是这样的: connectionFactory = new ActiveMQConnectionFactory(username, password, brokerUrl); connection = connectionFactory.createConnection(); connection.setClientID(durableSubscribe.elem…
一.分布式消息总线以及基于Socket的实现 在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给大家分享和介绍了一个极其简单也非常容易上的基于.NET Socket Tcp 技术实现的分布消息总线,也是一个简单的发布订阅框架: 并且以案例的形式为大家演示了如何使用这个分布式消息总线架构发布订阅架构模式的应用程序,在得到各位同仁的反馈的同时,大家也非常想了解订阅者离线的情况,即支持离线构发布订阅框架. 二.离线架构 不同于订阅者.发布者都同时在…
------------------------------------------------ 开发一个JMS的基本步骤如下: 1.创建一个JMS connection factory 2.通过connection factory来创建JMS connection 3.启动JMS connection 4.通过connection创建JMS session 5.创建JMS destination 6.创建JMS producer 或者创建JMS message,并设置destination 7…
为了避免意外宕机以后丢失信息,需要做到重启后可以恢复消息队列,消息系统一般都会采用持久化机制. ActiveMQ的消息持久化机制有JDBC,AMQ,KahaDB和LevelDB,无论使用哪种持久化方式,消息的存储逻辑都是一致的. 就是在发送者将消息发送出去后,消息中心首先将消息存储到本地数据文件.内存数据库或者远程数据库等,然后试图将消息发送给接收者,发送成功则将消息从存储中删除,失败则继续尝试. 消息中心启动以后首先要检查指定的存储位置,如果有未发送成功的消息,则需要把消息发送出去. >>…
http://blog.csdn.net/canot/article/details/52040415 关于个人对Redis提供的Pub/Sub机制的认识在上一篇博客中涉及到了,也提到了关于如何避免Redis的Pub/Sub的一个最大的缺陷的思路-消息的持久化(http://blog.csdn.net/canot/article/details/51975566).这篇文章主要是关于其思路(Redis的Pub/Sub的消息持久化)的代码实现: Pub/Sub机制中最核心的Listener的实现:…
消息派发 上篇<RabbitMQ入门-消息派发那些事儿>发布之后,收了不少反馈,其中问的最多的还是有关消息确认以及超时等场景的处理. 楼主,有遇到消费者后台进程不在,但consumer连接还在,当前消息是unacked状态,导致这个消息一直不被消费 队列在等待回复的时候,这个消息是怎么存放的?如果一直没有返回有超时么? ... 这里再对消息确认做以下补充 有关超时 RabbitMQ是没有超时概念的,如果一个消费者消费一条消息要花费很长时间,比如10分钟,那么这个过程会一直进行下去.除非你采用其…
为了避免意外宕机以后丢失信息,需要做到重启后可以恢复消息队列,消息系统一般都会采用持久化机制. ActiveMQ的消息持久化机制有JDBC,AMQ,KahaDB和LevelDB, 无论使用哪种持久化方式,消息的存储逻辑都是一致的.也就是说发送者将消息发送出去后,消息中心首先将消息存储到本地数据文件.内存数据库或者远程数据库等,然后试图将消息发送给接收者,发送成功则将消息从存储中删除,失败则继续尝试.消息中心启动以后首先要检查指定的存储位置,如果有未发送成功的消息,则需要把消息发送出去. 1.Ka…
为了避免意外宕机以后丢失信息,需要做到重启后可以恢复消息队列,消息系统一般都会采用持久化机制. ActiveMQ的消息持久化机制有JDBC,AMQ,KahaDB和LevelDB,无论使用哪种持久化方式,消息的存储逻辑都是一致的. 就是在发送者将消息发送出去后,消息中心首先将消息存储到本地数据文件.内存数据库或者远程数据库等,然后试图将消息发送给接收者,发送成功则将消息从存储中删除,失败则继续尝试. 消息中心启动以后首先要检查指定的存储位置,如果有未发送成功的消息,则需要把消息发送出去. 1. J…
直观的结果:当生产者向 topic 发送消息, 1. 若不存在持久订阅者和在线的普通订阅者,这个消息不会保存,当普通订阅者上线后,它是收不到消息的. 2. 若存在离线的持久订阅者,broker 会为该持久订阅者保存消息,当该持久订阅者上线后,会收到消息. 本质:producer 发送消息给 topic,broker 接收消息并且分发给 consumers.consumers 包括持久订阅者和在线的普通订阅者,对于持久订阅者,broker 把消息添加到它的 message cursor 中:对于普…
AMQ的持久化问题 前言 ​ 前面一篇AMQ专题中,我们发现对于Topic这种类型的消息,即使将deliveryMode设置为持久化,只要生产者在消费者之前启动.消息生产者发布的消息还是会丢失.这是符合JMS规范的. 当然,作为一个如此活跃的开源消息中间件,在实现JMS基本规范之后,必然会通过扩展的方式来实现Topic的持久化订阅. 而所谓的deliveryMode持久化和订阅持久化还是两个不同的概念.本篇博客我们就通过实例来一探究竟. DeliveryMode持久化 ​ 在前面一篇中,我们通过…
前面一章中介绍了activemq的初步实现:基于ActiveMQ的Topic的数据同步——初步实现 下面来解决持久化订阅的问题: (1)使用queue,即队列时,每个消息只有一个消费者,所以,持久化很简单,只要保存到数据库即可 .然后,随便一个消费者取走处理即可.某个消费者关掉一阵子,也无所谓. (2)使用topic,即订阅时,每个消息可以有多个消费者,就麻烦一些. 首先,假设消费者都是普通的消费者,------------------------<1>activemq启动后,发布消息1,可惜…
1. 概述 ActiveMQ不仅支持persistent和non-persistent两种方式,还支持消息的恢复(recovery)方式. 2. PTP Queue的存储是很简单的,其实就是FIFO的Queue 2. PUB/SUB 对于持久化订阅主题,每一个消费者都将获得一个消息的复制. 3. 有效的消息存储 ActiveMQ 提供了一个插件式的消息存储,类似于消息的多点传播,主要实现了如下几种: 1. AMQ消息存储-基于文件的存储方式,是以前默认的消息存储. 2. KahaDB消息存储-提…
去队列里面一直获取消息,一开始想到了两种解决方案: 第一:订阅一次获取一次消息,正常的话每次都能获取到,但是要及时去清理订阅并且时间粒度不好控制 第二:订阅一次,再获取消息这里加死循环,超时MQ已经做了,所以可以不用控制线程等待,获取到消息了以后,直接通过自定义事件的机制去及时处理消息 从最终实验结果来看,第二种是最优的做法,可以做到随时获取到消息,又不占用资源.接下来我把最终的实现代码分享处理,希望对大家有所帮助,有不对的地方,请及时联系我. 订阅主题: private IIBMWMQMsgH…
ActiveMQ的消息存储持久化■概述ActiveMQ不仅支持 persistent和 non-persistent两种方式,还支持消息的恢复( recovery)方式PTPQueue的存储是很简单的,就是一个FIFO的 Queue图1-1 PUB/SUB对于持久化订阅主题,每一个消费者将获得一个消息的复制图1-2 有效的消息存储ActiveMQ提供了一个插件式的消息存储,类似于消息的多点传播,主要实现了如下几种:1:AMQ消息存储-基于文件的存储方式,是以前的默认消息存储2: KahaDB消息…
ActiveMQ的消息持久化机制有JDBC,AMQ,KahaDB和LevelDB,还有一种内存存储的方式,由于内存不属于持久化范畴,而且如果使用内存队列,可以考虑使用更合适的产品,如ZeroMQ.所以内存存储不在讨论范围内. 无论使用哪种持久化方式,消息的存储逻辑都是一致的. 消息分为Queue和Topic两种,Queue是点对点消费,发送者发送一条消息,只有一个且唯一的一个消费者能对其进行消费. Topic是订阅式消费,一个消息可以被很多的订阅者消费,其中定阅者又分为持久化订阅和非持久化订阅.…
非持久化订阅持续到它们订阅对象的生命周期.这意味着,客户端只能在订阅者活动时看到相关主题发布的消息.如果订阅者不活动,它会错过相关主题的消息.如果花费较大的开销,订阅者可以被定义为durable(持久化的).持久化的订阅者注册一个带有JMS保持的唯一标识的持久化订阅(subscription).带有相同标识的后续订阅者会再续前一个订阅者的订阅状态.如果持久化订阅没有活动的订阅者,JMS会保持订阅消息,直到消息被订阅接收或者过期. 生产者: package cn.slimsmart.activem…
JMS介绍 JMS是什么? JMS的全称Java Message Service,既Java消息服务. JMS是SUN提供的旨在统一各种MOM(Message-Oriented Middleware)系统接口的规范,它包含点对点(Point to Point,PTP)和发布/订阅(Publish/Subscribe,pub/sub)两种消息模型,提供可靠消息传输.事务和消息过滤等机制. ActiveMQ是Apache出品的开源项目,他是JMS规范的一个实现. MOM是什么? MOM(Messag…
文档目录 本节内容: 简介 发送模式 通知类型 通知数据 通知重要性 关于通知持久化 订阅通知 发布通知 用户通知管理器 实时通知 客户端 通知存储 通知定义 简介 通知用来告知用户系统里特定的事件发生了,ABP提供一个发布/订阅,它基于实时通知基础框架. 发送模式 有两种方式可以发送通知给用户: 用户订阅一个特定的通知类型,然后我们发布一个此类型的通知,它会分发给所有订阅的用户,这就是发布/订阅模式. 我们可以直接发送一个通知给目标用户(users). 通知类型 有两种通知类型: 一般通知:任…
package com.winner.topic; import org.apache.activemq.ActiveMQConnectionFactory; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.Destination; import javax.jms.MessageProducer; import javax.jms.Session; import javax.jm…
atitit.web 推送实现方案集合 1. 俩中模式 Push/Pull 1 2. 需要实现的特性 2 2.1. 推送消息广播. 2 2.2. 推送定向消息. 2 2.3. 提供连接上线前.上线.下线前.下线.发送消息等多种可处理事件. 2 2.4. 消息缓存机制,确保长轮询工作模式下不丢失消息. 2 2.5. 客户端正常下线,服务端可立即感知. 2 2.6. 客户端异常停止工作,服务端可定时检查并感知. 2 2.7. 以注册通道应用的方式,让开发者对框架功能进行扩展,实现自己的应用. 2 3…
安装环境:Activemq5.11.1, jdk1.7(activemq5.11.1版本需要jdk升级到1.7),虚拟机: 192.168.147.131 [root@localhost software]# pwd /export/software [root@localhost software]# -bin.tar.gz [root@localhost software]# /usr/local 配置Nginx代理Activemq后台管理应用默认绑定的8161端口 upstream tom…
以下内容转自: http://setting.iteye.com/blog/1097767 ---------------------------------------------------------------------------------------------------------------- kimmking:介绍下jms和ActiveMQ.在讲JMS之前,我们聊聊相关的背景.谁知道JMS是什么意思? kimmking:对,是message service.那,什么事me…
1.JMS Queue 执行 load balancer语义:一条消息仅能被一个 consumer(消费者) 收到.如果在 message 发送的时候没有可用的consumer,那么它将被保存一直到能处理该 message 的 consumer 可用.如果一个 consumer 收到一条 message 后却不响应它,那么这条消息将被转到另一个consumer 那儿.一个 Queue 可以有很多 consumer,并且在多个可用的 consumer中负载均衡. 点对点消息传递域的特点如下:• …
接上篇 JMS笔记(一),启动ActiveMQ后,打开http://127.0.0.1:8161/admin管理界面,用户名admin密码admin,点击上面的Queues菜单,创建一个q_test_20160108,之后就可以向这个queue写东西了 1. P2P模式 生产者示例代码: @Test public void testActiveMqSend(){ // ConnectionFactory :连接工厂,JMS 用它创建连接 ConnectionFactory connectionF…
一.下载使用: 官网下载apache-activemq-5.8.0-bin.tar.gz.apache-activemq-5.8.0-bin.zip 解压,然后启动ActiveMQ服务器 方法1: 直接运行bin\activemq.bat 方法2(在JVM中嵌套启动): cd example ant embedBroker 可以登录ActiveMQ消息管理后台系统:http://localhost:8161/adminadmin/admin登录 二.运行小例子 1.Queue消息示例: * 启动…
JMS and ActiveMQ first lesson -- jms基础概念和应用场景 2011-6-18 PM 9:30 主讲:kimmking <kimmking@163.com> 整理:林木森 ppt下载地址: http://code.google.com/p/activemq-store-mongodb/downloads/list 下面开始: kimmking:介绍下jms和ActiveMQ.在讲JMS之前,我们聊聊相关的背景.谁知道JMS是什么意思? kimmking:对,是m…
使用JMS 的应用程序被称为JMS 客户端,处理消息路由与传递的消息系统被称为JMS Provider,而JMS 应用则是由多个JMS 客户端和一个JMS Provider 构成的业务系统.发送消息的JMS 客户端被称为生产者(producer),而接收消息的JMS 客户端则被称为消费者(consumer).同一JMS 客户端既可以是生产者也可以是消费者. JMS 的编程过程很简单,概括为:应用程序A 发送一条消息到消息服务器(也就是JMS Provider)的某个目得地(Destination…
一.特性及优势 1.实现JMS1.1规范,支持J2EE1.4以上2.可运行于任何jvm和大部分web容器(ActiveMQ works great in any JVM)3.支持多种语言客户端(java, C, C++, AJAX, ACTIONSCRIPT等等)4.支持多种协议(stomp,openwire,REST)5.良好的spring支持(ActiveMQ has great Spring Support)6.速度很快,JBossMQ的十倍(ActiveMQ is very fast;…
过了个春节,回到公司的成小胖变成了成大胖.但是你们千万别以为他那个大肚子里面装的都是肥肉,里面的墨水也多了不少嘞,毕竟成小胖利用春节的半个月时间专心学习并研究了 ActiveMQ,嘿嘿……这不,为了检验下自己的学习成果,上班的第一天成小胖就去找架构师老王交流 ActiveMQ 相关的知识,还顺便向老王讨了个红包,可把成小胖给高兴坏了.“来,根据你的了解说下 ActiveMQ 是什么.” “这个简单,ActiveMQ 是一个 MOM,具体来说是一个实现了 JMS 规范的系统间远程通信的消息代理.它…