AMQ学习笔记 - 07. 持久性订阅】的更多相关文章

概述 一般的订阅,订阅者必须时刻处于活跃状态,才不会遗漏任何信息:持久性订阅,当订阅者处于非活动状态时,代理会为它们保留信息,下一次连接之后推送给它们. 持久订阅 与一般的定于相比,持久性订阅需要: 为Connection指定一个唯一的ClientID- 在这里,Connection有客户端的含义- ClientID的变化,将被视为不同的客户端 创建Subscriber时,指定一个name- name的变化,将被视为不同的订阅者 API javax.jms.Connection setClien…
学习笔记 07 --- JUC集合 在讲JUC集合之前我们先总结一下Java的集合框架,主要包含Collection集合和Map类.Collection集合又能够划分为LIst和Set. 1. List的实现类主要有: LinkedList, ArrayList, Vector, Stack. (01) LinkedList是双向链表实现的双端队列:它不是线程安全的.仅仅适用于单线程. (02) ArrayList是数组实现的队列,它是一个动态数组.它也不是线程安全的,仅仅适用于单线程. (03…
机器学习实战(Machine Learning in Action)学习笔记————07.使用Apriori算法进行关联分析 关键字:Apriori.关联规则挖掘.频繁项集作者:米仓山下时间:2018-11-2机器学习实战(Machine Learning in Action,@author: Peter Harrington)源码下载地址:https://www.manning.com/books/machine-learning-in-actiongit@github.com:pbharri…
Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 只订阅 问题 为方便开发测试,经常会在线下共用一个所有服务可用的注册中心,这时,如果一个正在开发中的服务提供者注册,可能会影响消费者不能正常运行. 解决方案 可以让服务提供者开发方,只订阅服务(开发的服务可能依赖其它服务),而不注册正在开发的服务,通过直连测试正在开发的服务. 禁用注册配置: <dubbo:registry address="10.20.153.10:909…
目标检测与识别是计算机视觉中最常见的挑战之一.属于高级主题. 本章节将扩展目标检测的概念,首先探讨人脸识别技术,然后将该技术应用到显示生活中的各种目标检测. 1 目标检测与识别技术 为了与OpenCV 学习笔记 05 人脸检测和识别进行区分:需重新说明一下什么是目标检测. 目标检测是一个程序,它用来确定图像的某个区域是否有要识别的对象,对象识别是程序识别对象的能力.识别通常只处理已检测到对象的区域.若人们总是会在有人脸图像的区域去识别人脸. 在计算机视觉中有很多目标检测和识别的技术,本章会用到:…
01-06回顾: Go语言开发环境配置, 常用源码文件写法, 程序实体(尤其是变量)及其相关各种概念和编程技巧: 类型推断,变量重声明,可重名变量,类型推断,类型转换,别名类型和潜在类型 数组: 数组类型的值的长度是固定的,在声明数组的时候,长度必须给定,并且在之后不会改变,可以说数组的长度是其类型的. 比如:[1]string和[2]string就是两个不同的数组类型. 切片: 切片类型的值是可变长的.切片的类型字面量中只有元素的类型([]int),而没有长度.切片的长度可以自动地随着其中元素…
STM32F103RCT有3个ADC,12位主逼近型模拟数字转换器,有18个通道,可测量16个外部和2个内部信号源.各通道的A/D转换可以单次.连续.扫描或间断模式执行. 1.通道选择 stm32把ADC转换分成2个通道组:规则通道组相当于正常运行的程序:注入通道组相当于中断.程序初始化阶段设置好不同的转换组,系统运行中不用变更循环转换的配置,从而达到任务互不干扰和快速切换. 有16个多路通道.可以把转换组织成两组:规则组和注入组.在任意多个通道上以任意顺序进行的一系列转换构成成组转换.例如,可…
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------…
本篇中涉及到算术运算,使用了$[]这种我未在官方手册中见到的用法,但是确实可用的,在此前的博文<Bash脚本编程学习笔记03:算术运算>中我有说明不要使用,不过自己忘记了.大家还是尽量使用其他的方法进行算术运算. 简介 Bash具有三种循环结构: for循环. while循环. untile循环. 在使用循环结构体的时候,需要注意循环的进入条件和结束条件,避免出现死循环的情况. for循环 for循环又分为两种格式:遍历列表和控制变量. 遍历列表 for VAR in LIST; do BOD…
概述 基于ZooKeeper + ActiveMQ + replicatedLevelDB,在Windows平台的主从部署方案. 主从部署可以提供数据备份.容错[1]的功能,但是不能提供负载均衡的功能.   注: 容错:主服务器宕掉,再选出一台作为作为主服务器,来提供服务. 部署图   简单说明 ActiveMQ提供了队列.本地持久化的功能,ZooKeeper提供了主从选举的功能.Producers将消息发送给主从队列体系[1],Consumers从主从队列体系中获取消息. 注: [1] 主从队…
概述 以ActiveMQ + Log4j + Spring的技术组合,实现基于消息队列的统一日志服务. 参考:Spring+Log4j+ActiveMQ实现远程记录日志——实战+分析 与参考文章的比较 更新了技术的版本e.g. Spring升级到4.2.0,ActiveMQ升级到5.13.2 更新了依赖e.g. 使用activemq-client 5.13.2替换activemq-core 5.7.0,并取消了多余的spring-jms依赖 精简了配置e.g. 去掉spring.xml中的jms…
概述 对Acknowledge机制进行测试. 此处的测试是针对Consumer的确认设计的:对于Producer的确认是透明的,无法提供测试. 测试实例 设计demo,测试三种确认机制. 测试机制 测试实例 结果预测 AUTO_ACKNOWLEDGE 接收正常 消息出队量=消息入队量 接收异常 消息出队量=0 CLIENT_ACKNOWLEDGE 1次确认/2条消息 - 每2条消息确认1次 每次确认2条信息 从不确认 消息出队量=0 DUPS_OK_ACKNOWLEDGE 每一次接收消息后,使线…
概述 Apache ActiveMQBrowser可以用于查看AMQ中的消息.这里对其使用方法进行简单介绍. 使用介绍 1.下载并解压缩 下载地址:Apache ActiveMQBrowser,当前最新的版本是ActiveMQBrowser_2.5.2.8ForJDK1.6. 解压缩之后可以发现,ActiveMQBrowser很简单,只有一级目录,里面有几个jar包.几个txt文件.一个图片文件.一个bat文件. 2.添加classpath 如果MQ中的消息是ObjectMessage类型,我们…
概述 客户端编程模型,是讲如何使用JMS API实现Java应用程序和JMS Provider的通信. 消息传送模式 消息传送模式又称为消息传送域,JMS API定义了两种模式:PTP和Pub/Sub. PTP 全称:Point-to-Point 中文:点对点 上图描述了这样的内容:Sender发送Message到代理维护的Queue,然后Receiver可以从这个Queue中获取这个Message. 这个模式的特点是: 一个Message只能交给一个Receiver:这里的Message像是一…
看<量化投资:以python为工具>这本书,第一部分是python的基础知识.这一部分略读了,只看我还不知道或不熟的. 定义复数 x = complex(2, 5) #2+5j 也可以直接定义 y = 3-6j 用id()可以得到变量的内存地址 python z = 3-6j print(id(y), id(z))python y和z的内存地址是一样的. 531269809744 531269809744 python可以为不可变对象分配固定的内存,减少内存占用. 当两个变量指向同一对象时,i…
发布订阅(pub/sub)是一种消息通信模式,主要的目的是解耦消息发布者和消息订阅者之间的耦合,这点和设计模式中的观察者模式比较相似.pub /sub不仅仅解决发布者和订阅者直接代码级别耦合也解决两者在物理部署上的耦合.redis作为一个pub/sub server,在订阅者和发布者之间起到了消息路由的功能.订阅者可以通过subscribe和psubscribe命令向redis server订阅自己感兴趣的消息类型,redis将消息类型称为通道(channel).当发布者通过publish命令向…
package cn.com; import java.util.List; import redis.clients.jedis.Jedis; public class Redis_PubSub { public static Jedis redis = new Jedis("localhost", 6379);// 连接redis /** * PUBLISH channel message * 将信息 message 发送到指定的频道 channel . * */ public s…
概述 客户端编程模型中,大部分的步骤都是相同的.将相同的部分做成模板,将不同的部分预留接口,实现者就只需要针对不同的部分提供实现. 设计 类图 发送方客户端 说明: 基于模板的思想,SendTemplate提供了消息发送的全局实现,但是在创建消息是调用了抽象的createMessage(Session)方法,这个方法留待子类实现. 还记得JMS客户端编程模型中的消息传送模式吗?这里保留了两个模式的发送部分,并分开定义sendToQueue.snedToTopic. 代码索引 SendTempla…
概述 本文介绍JMS中可能发生消息故障的3个隐患阶段,以及确保消息安全的3种保障机制. 故障分析 在介绍可靠传送的确保机制之前,先分析消息在传送的过程中可能在哪个阶段出现问题. 1.两个跃点 跃点的含义在于消息的持有者发生变化,如发送使消息由Producer持有变成JMS Provider持有.在消息传送的过程中,共有2个跃点: 发送跃点Producer将消息发送到JMS Provider的目的地 接收跃点Consumer从JMS Provider的目的地获取消息 2.三个隐患阶段 在消息传送过…
概要 JmsTemplate提供了4组*3,共计12个接收用的方法.   JmsTemplate接收所需要的资源ConnectionFactory和Destination,和发送是一致的.   接收的方法有4组: 基本的接收 接收并转换 带有选择器的接收 选择接收并转换 1.基本的接收方法 JmsTemplate提供了3个基本的接收方法,与发送的方法进行对比: 接收 发送 public Message receive(Destination destination)从指定的Destination…
概述 浏览只是针对Queue的概念,Topic没有浏览.浏览是指获取消息而消息依然保持在broker中,而消息的接收会把消息从broker中移除. 浏览可以用来实现对Queue中消息的监控. JMS API 浏览的概念来源于JMS,所以有必要先把JmsTemplate放一放.先看一下下面的API: Interface javax.jms.Session QueueBrowser createBrowser(Queue queue)创建指定Queue的Browser对象. QueueBrowser…
概述 前面我们分别介绍了发送.接收和浏览,这三个的实现都依赖于将要介绍的执行. 执行算是一个相对比较底层的方法系列,一般情况下,我们不需要直接面向将要介绍的方法. 执行 1.关于回调接口 在讲执行之前,我们先回忆一下之前将的发送.接收和浏览.JmsTemplate接管了整个过程,但是考虑到我们可能在某个特殊的阶段做一些特殊的处理,所以又在敏感的点给我们自主行为的机会——以回调接口的方式.我们实现回调,JmsTemplate在到了那个点时,调用我们的回调.让我们看一下我们接触到的回调接口: 发送…
概述 这是关于JmsTemplate的最后一篇总结,且只会介绍几个比较重要的特性. 消息的递送模式 在发送消息给时,可以告知这是持久化的消息,还是非持久化的消息.如果是非持久化的消息,broker会将消息保留在内存,否则就会持久化到磁盘.非持久化:高吞吐,易丢失:持久化:低吞吐,不易丢失. 相关的API: Class org.springframework.jms.core.JmsTemplate public void setDeliveryMode(int deliveryMode)设置是否…
概述 如何使用spring-jms来简化jms客户端的开发? 这篇文章主要记录如何配置以便以后复用,而非原理的讲解,有些内容我 没有掌握原理. producer端 producer端负责发送,这里使用JmsTemplate. spring配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans&qu…
概述 对事务机制进行测试. 测试实例 测试实例 结果预测 发送正常 3条消息入队 发送异常 0条消息入队 接收正常 3条消息出队 接收异常 0条消息出队 demo设计 设计图 测试分工 测试类 测试方法 TransactedProducer.java- 测试发送 sendNormal():void- 测试“发送正常” sendIntentional():void- 测试“发送异常” TransactedConsumer.java- 测试接收 receiveNormal():void- 测试“接收…
概述 对持久化的有效性进行测试. 测试实例 测试实例 结果预测 持久化递送 重启ActiveMQ后,消息还在队列中 非持久化递送 重启ActiveMQ后,消息不在队列中 demo设计 jms-producer |---- src/main/java/ |---- cn.sinobest.asj.producer.jms.deliverymode |---- ProducerTest.java |---- sendPersistent():void # 测试持久化递送 |---- sendNoPe…
概述 在使用Atomikos为ActiveMQ提供JTA支持时,Atomikos在控制台打印了繁琐的日志.这里介绍如何控制Atomikos日志输出的粒度. 解决方案 基于以下三个事实: Atomikos使用slf4j输出日志所以,项目里要提供slf4j-api的相关jar包. slf4j只是一个抽象层,你还需要绑定到一个实现上在这里我们使用log4j,那么我们需要引入下面的jar:[1] slf4j-log4j12:适配器的角色,提供slf4j-api到log4j的转换[2] log4j:日志实…
原文地址:Async Sends 背景 ActiveMQ支持同步.异步两种发送的模式将消息发送到broker,模式的选择对发送延时有巨大的影响.producer能达到怎样的产出率[1],主要受发送延时的影响,使用异步发送,可以显著的提高发送的性能. [1] 产出率:发送的数据量/时间.   ActiveMQ默认使用异步发送的模式:除非明确指定使用同步发送的方式,或者在未使用事务的前提下发送持久化的消息,这两种情况都是同步发送的.   如果你没有使用事务,且发送的是持久化的消息,每一次发送都是同步…
使用DirectMethods在JS中调用C#方法 我承认,这个标题有点噱头,其实应该是通过DirectMethods,在JS中通过异步调用的方式执行服务器端的方法. 来看一个例子吧: [DirectMethod] public void AddToServerTime(int hours) { var date = DateTime.Now.Add(new TimeSpan(hours, 0, 0)); this.myLabel.Text = date.ToString(); } 这是一个as…
1 SVM 基本概念 本章节主要从文字层面来概括性理解 SVM. 支持向量机(support vector machine,简SVM)是二类分类模型. 在机器学习中,它在分类与回归分析中分析数据的监督式学习模型及相关的学习算法:在给定的一组训练实例中,每个训练实例会被标记其属性类别(两个类别中的一个),是非概率的二元线性分类器. SVM模型是将采用尽可能宽的.明显的间隔将实例分开,使得实例分属不同的空间:然后将新的实例映射到某一空间,基于新的实例所属空间来预测其类别. SVM 除了可进行线性分类…