在上一章中,我们构建了一个简单的日志系统,我们可以把消息广播给很多的消费者.在本章中我们将增加一个特性:我们可以订阅这些信息中的一些信息.例如,我们希望只将error级别的错误存储到硬盘中,同时可以将所有级别(error.info.warning等)的日志都打印在控制台上. 1.绑定(Bindings) 在上一章中,我们已经创建了绑定关系,回顾一下代码: channel.queueBind(queueName, EXCHANGE_NAME, ""); 一个绑定是一个交换器与队列之间的关…
在上一篇博客<RabbitMQ入门:发布/订阅(Publish/Subscribe)>中,我们认识了fanout类型的exchange,它是一种通过广播方式发送消息的路由器,所有和exchange建立的绑定关系的队列都会接收到消息.但是有一些场景只需要订阅到一部分消息,这个时候就不能使用fanout 类型的exchange了,这个就引出来今天的“猪脚”--Direct Exchange,通过Routing Key来决定需要将消息发送到哪个或者哪些队列中. 接下来请收看详细内容: Direct…
这一篇我们将介绍如何订阅消息的一个子集.例如,我们只需要将日志中的error消息存储到日志文件中而将所有日志消息都在控制台打印出来. 绑定(Bindings) 在前面的例子中,我们创建了交换机和队列的绑定关系: channel.queueBind(queueName, EXCHANGE_NAME, ""); 绑定交换机和队列可以理解为队列对这个交换机上的消息感兴趣. 绑定可以添加额外的参数routingKey,称之为绑定键(binding key).下面是我们如何使用键创建绑定的方法:…
直连交换机类型为:direct.加入了路由键routingKey的概念. 就是说 生产者投递消息给指定交换机的指定路由键. 只有绑定了此交换机指定路由键的消息队列才可以收到消息. 生产者: package com.kf.queueDemo.exchange.direct; import java.io.IOException; import java.util.concurrent.TimeoutException; import com.kf.utils.RabbitConnectionUti…
Windows 安装 amqp 扩展 RabbitMQ 是基于 amqp(高级消息队列协议) 协议的.使用 RabbitMQ 前必须为 PHP 安装相应的 amqp 扩展. 下载相应版本的 amqp 扩展:http://pecl.php.net/package/amqp,解压缩文件. 将 php_amqp.dll 复制到 php 的扩展目录 ext 下,修改配置文件 php.ini: [amqp] extension=php_amqp.dll 将 rabbitmq.*.dll 文件复制到 php…
1.前言 上一随笔详细记录了直连交换机的方法,发送的消息是异步的,如果消息未被消费者消费,那么可以一直存在消息队列中. 那么有没有办法做一个回调,当消息被消费后,被通知消息成功被消费者消费啦? 答案是有的. 需要在消息生产者的消息生产类实现  RabbitTemplate.ConfirmCallback  接口,重写 回调方法confirm(), 同时 RabbitTemplate 模板工具需要自定义注入连接rabbitmq的连接工厂对象才可以正常执行回调操作. 而消费者端的代码不需要修改. 下…
1.前言 消息队列除了kafka 外,还有许多种,比如RabbitMQ .ActiveMQ.ZeroMQ.JMQ等. 老牌的ActiveMQ ,底层使用Java写的,资源消耗大,速度也慢,但是适合 JMS [java message service]的使用 ,事实上,性能差,现在用的人很少了. 现在流行使用kafka,那是因为支持很大的吞吐量,处理数据速度很快,但是,对数据的处理安全性不高,而且,需要处理那么大吞吐量的应用实际上不多, kafka更多的是使用在大数据方面,底层是 使用 zooke…
先决条件 rabbitmq server 安装参考 一个添加了 web 依赖的 spring boot 项目 我的版本是 2.5.2 添加 maven 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> 配置 application.yml…
绑定( Bindings)   之前的文章中我们已经创建过bindings,代码如下:         channel.QueueBind(queue: queueName, exchange: EXCHANGE_NAME, routingKey: ROUTING_KEY, arguments: null);   绑定(bindings)是指交换机(exchange)与队列(queue)之间的关系.可以简单的理解为:队列(queue)对所绑定的交换机(exchange)上的消息感兴趣,交换机(e…
路由(Routing) 在前面的教程中,我们实现了一个简单的日志系统.可以把日志消息广播给多个接收者. 本篇教程中我们打算新增一个功能——使得它能够只订阅消息的一个字集.例如,我们只需要把严重的错误日志信息写入日志文件(存储到磁盘),但同时仍然把所有的日志信息输出到控制台中 绑定(Bindings) 前面的例子,我们已经创建过绑定(bindings),代码如下: $exchange->publish($message, ''); 绑定(binding)是指交换器(exchange)和队列(que…