在上一个教程中,我们提高了消息传递的灵活 我们使用direct交换而不是使用仅能够进行虚拟广播的fanout交换, 并且获得了基于路由key 有选择地接收消息的可能性. 虽然使用direct 交换改进了我们的系统,但它仍然有局限性 - 它不能基于多个标准进行路由. 在我们的消息传递系统中,我们可能不仅要根据路由key订阅队列,还要根据生成消息的源来订阅队列. 为了在我们的日志记录系统中实现这种灵活性,我们需要了解更复杂的topic交换. Topic Exchange 发送到topic 交换的消息…
本文是译文,原文请访问:http://www.rabbitmq.com/tutorials/tutorial-one-spring-amqp.html RabbitMQ 是一个Brocker (消息队列服务器),它接受和转发消息 . 你可以将它当做邮局: 当你将要发布的邮件放在邮箱中时,您可以确定邮件先生或Mailperson女士最终会将邮件发送给您的收件人.在这个比喻中,RabbitMQ是邮箱,邮局和邮递员. RabbitMQ和邮局之间的主要区别在于它不处理信纸,而是接受,存储和转发二进制大对…
在第一篇教程中,我们展示了如何使用start.spring.io来利用Spring Initializr创建一个具有RabbitMQ starter dependency的项目来创建spring-amqp应用程序. 在上一个教程中,我们创建了一个新的包(tut2)来放置我们的配置,发送者和接收者,并创建了一个包含两个使用者的工作队列.工作队列背后的假设是每个任务都交付给一个工作者. 在这部分中,我们将实现扇出模式,以向多个消费者传递消息.此模式称为 Publish/Subscribe “发布/订…
在上一篇博文中,我们写了程序来发送和接受消息从一个队列中. 在这篇博文中我们将创建一个工作队列,用于在多个工作人员之间分配耗时的任务. Work Queues 工作队列(又称:任务队列)背后的主要思想是避免立即执行资源密集型任务,并且必须等待它完成.相反,我们安排任务稍后完成.我们将任务封装 为消息并将其发送到队列.在后台运行的工作进程将弹出任务并最终执行作业.当您运行许多工作程序时,它们之间将共享任务. 这个概念在Web应用程序中特别有用,因为在短的HTTP请求窗口中无法处理复杂的任务. 我们…
Remote procedure call (RPC) 在第二篇教程中,我们学习了如何使用工作队列在多个工作人员之间分配耗时的任务. 但是如果我们需要在远程计算机上运行一个函数并等待结果呢?嗯,这是一个不同的故事.此模式通常称为远程过程调用或RPC. 在本教程中,我们将使用RabbitMQ构建RPC系统:客户端和可伸缩的RPC服务器. 由于我们没有任何值得分发的耗时任务,我们将创建一个返回Fibonacci数字的虚拟RPC服务. 客户端界面 为了说明如何使用RPC服务,我们将从“Sender”和…
在上一个教程中,我们构建了一个简单的fanout(扇出)交换.我们能够向许多接收者广播消息. 在本教程中,我们将为其添加一个功能 - 我们将只能订阅一部分消息.例如,我们将只能将消息指向感兴趣的特定颜色(“orange”,“black”,“green”),同时仍然能够在控制台上打印所有消息. 绑定 在前面的例子中,我们已经在创建绑定.您可以在我们的Tut3Config文件中调用这样的代码: @Bean public Binding binding1(FanoutExchange fanout,…
原文:(八)RabbitMQ消息队列-通过Topic主题模式分发消息 前两章我们讲了RabbitMQ的direct模式和fanout模式,本章介绍topic主题模式的应用.如果对direct模式下通过routingkey来匹配消息的模式已经有一定了解那fanout也很好理解.简单的可以理解成direct是通过routingkey精准匹配的,而topic是通过routingkey来模糊匹配. 在topic模式下支持两个特殊字符的匹配. * (星号) 代表任意 一个单词 # (井号) 0个或者多个单…
在 上篇博文 译:4.RabbitMQ 之Routing(路由) 中,我们改进了日志系统. 我们使用的是direct(直接交换),而不是使用只能进行虚拟广播的 fanout(扇出交换) ,并且有可能选择性地接收日志. 虽然使用direct(直接交换)改进了我们的系统,但它仍然有局限性 - 它不能基于多个标准进行路由. 在我们的日志系统中,我们可能不仅要根据严重性订阅日志,还要根据发出日志的源来订阅日志.您可能从syslog unix工具中了解这个概念,该 工具根据严重性(info / warn…
前言 消息队列在现今数据量超大,并发量超高的系统中是十分常用的.本文将会对现时最常用到的几款消息队列框架 ActiveMQ.RabbitMQ.Kafka 进行分析对比.详细介绍 RabbitMQ 在 Sprinig 框架下的结构及实现原理,从Producer 端的事务.回调函数(ConfirmCallback / ReturnCallback)到 Consumer 端的 MessageListenerContainer 信息接收容器进行详细的分析.通过对 RabbitTemplate.Simpl…
前言 1. AMQP 核心组件 RabbitAdmin SpringAMQP声明 RabbitTemplate SimpleMessageListenerContainer MessageListenerAdapter MessageConverter 2. RabbitAdmin RabbitAdmin类可以很好的才注意RabbitMQ,在Spring中直接进行诸如即可. 注意: autoStartUp必须要设置为true,否则Spring容器不会加载RabbitAdmin类 RabbitAd…