`
sheungxin
  • 浏览: 103591 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
RPC,同步消息      RabbitMQ默认的consumer为异步监听,RPC应用需要实现consumer的同步,可以使用QueueingConsumer(继承与DefaultConsumer,定义了一个堵塞队列LinkedBlockingQueue)实现同步      实际上就是服务端、客户端各定义一个消息队列,相互发送消息,客户端发送消息后同步等待结果返回 注意要点 发送消息时指定回复队列、corrId://发送消息,指定回复消息所在队列 BasicProperties props=new BasicProperties.Builder().correlationId(corr ...
Headers转发器      消息发送时可以在header中定义一些键值对,接收消息队列与headers转发器绑定时可以指定键值对,all、any两种方式(队列绑定转发器时指定的键值对与headers中存储的键值对匹配),匹配上即可接收到消息 注意要点 headers转发器://声明headers转发器 channel.exchangeDeclare("header_exchange", BuiltinExchangeType.HEADERS); 发布消息时增加header头信息://定义headers存储的键值对 Map<String, Object> ...
主题转发器(Topic)      Topic转发器的功效包含fanout、direct类型的转发器,其特殊的地方在于转发器与队列的绑定时routingkey可以使用通配符*、#,使用*就相当于fanout,不使用通配符就相当于direct,否则就是模糊匹配,匹配上的队列都可以收到消息 注意要点 topic转发器:channel.exchangeDeclare("topic_logs", "topic"); channel.basicPublish("topic_logs", severity , null, Serializa ...
路由选择(Routing)      Routing即按照某条路线把消息发送出去,所有这条路线上的队列都将接收到消息。      使用direct转发器,在转发器上使用同一routingkey绑定多个队列,根据routingkey发送消息,所有绑定的队列都将收到消息 注意要点 direct转发器,把消息直接转发到绑定routingkey的队列:channel.exchangeDeclare("direct_logs", "direct"); channel.basicPublish("direct_logs", severity ...
发布/订阅      即实现单点发送消息,多点接收。使用fanout转发器,广播到所有它知道的队列上 注意要点 fanout转发器中不需要routingKey,指定也无效 创建fanout转发器:channel.exchangeDeclare("fanout_logs", "fanout"); channel.basicPublish("fanout_logs", "" , null, SerializationUtils.serialize(object)); 临时队列的创建://创建一个临时队列,返回队 ...
工作队列      工作队列的好处在于多个工作线程共享执行任务队列,使用round-robin的方式分发任务(简单的理解:依次把任务分配给工作进程,一次性分配1..n个任务,平均分配)。 注意要点 工作线程的产生,在同一队列上声明多个Consumer:channel.basicConsume(queue, false, consumer); 消息持久化://第二个参数durable设为true,实现消息持久化 channel.queueDeclare(queue, true, false, false, null); // MessageProperties.PERSISTENT_TE ...
注意要点 同一队列多次创建://此处声明队列为了防止接收者先运行,队列还不存在时创建队列(同一队列只会创建一次) channel.queueDeclare(queue, false, false, false, null); 消息发送类 package com.demo.mq.rabbitmq.example01; import java.io.IOException; import java.io.Serializable; import org.apache.commons.lang3.SerializationUtils; import com.demo. ...
开启management plugin功能 1、management plugin默认安装未开启,需要执行以下命令:    $ cd /usr/lib/rabbitmq/bin/    $ sudo rabbitmq-plugins enable rabbitmq_management 2、management plugin提供HTTP API来管理和监控RabbitMQ Server,具体包含如下功能: 删除、生成、列表,包括:exchanges,queues,bindings,users,virtual hosts and permissions 监视 queue 长度,每个 channe ...
1、RabbitMQ安装 官网下载地址:http://www.rabbitmq.com/download.html 引用RabbitMq、ActiveMq、ZeroMq、kafka之间的比较,资料汇总: http://blog.csdn.net/linsongbin1/article/details/47781187 https://my.oschina.net/u/236698/blog/501834 1)、deb包安装(Ubuntu系统),下载rabbitmq-server_2.8.1-1_all.deb,下载地址:http://www.rabbitmq.com/install-debi ...
package com.demo.algorithm.sort; public class NumberSwap { /** * 通过中间值进行交换 * @param a * @param b */ public static void swap1(int a,int b){ int tmp=a; a=b; b=tmp; display(a, b); } /** * 两数求和然后相减的方式进行交换,x、y过大有可能超出int的最大值 * @param a * @param b */ pu ...
     对于排序算法,这些年用到的也不多,基本处于拿来用的状态,一直没有花时间稍微深入了解。最近下定决心自己动手写写,加深理解。查看了不少资料,有不少分析的很到位,帮助快速理解,在此感谢! 1、概念理解及实现 package com.demo.algorithm.sort; /** * 排序算法合集 * @author sheungxin * */ public class NumberSort { /** * 插入排序-直接插入排序 * 工作原理:构建有序序列,对于未排序的数据,在已排序序列中从后向前扫描,找到相应位置并插入 * 参考 ...
参考文档 实现网站二维码扫描登录 http://blog.csdn.net/jiang1013nan/article/details/22651439 实现手机扫描二维码进行登录 http://www.daxueit.com/article/2581.html 思路梳理: 1、生成一个唯一码(标识符+sessionid+时间戳,对称加密),转换为二维码。 2、APP端扫描二维码,校验二维码有效性,通知服务端扫描成功(APP需要处于登录状态) 3、服务端收到扫描成功通知(可校验),推送消息(推送机制)给浏览器端,二维码转换状态为已扫描 4、同时返回授权地址到APP端,由APP端跳转到授权 ...
Global site tag (gtag.js) - Google Analytics