第3.3 案例2: 工作队列 job queue
第2个案例就是工作队列,典型的点对点的消息,一个Producer发送一个工作消息到队列去,具有Listener类的Consumer能够从工作队列中获得一个工作情况的消息,这个消息被这个消费者消费掉之后,就不存在了,隶属于一点对一点模式,这不同于3.2案例中的股票期货那样可以把一个价格发布到多个订阅了的消费者身上。
还有一点不同:Producer使用消息生产者发送了100个消息进入队列后,就马上关闭连接了,这一点同3.2一样。此后,这10个消息仍旧存在于JMS服务器消息域中,随后的消费者什么时候运行就什么时候来消费掉这些消息,不用一直在线等,该队列中的消息也不会逝去。这也是不同于3.2案例的地方。
启动步骤:
1、 启动ActiveMQ。
2、 首先要运行的是Producer类。
3、 在运行Consumer类。
需要说明的一点是:
1、这次谁先启动都无所谓,因为在消息会在队列里暂时存储一段时间,谁先启动都无关紧要,这一点我已经证实多次了,而且,消费者所获得的消费消息也会完整无缺,一个也不缺。
2、关于“点对点”模式的说明,具体来讲应该是“消息点对点”。如果理解为一个生产者和一个消费者,那这样是理解错误的,应该是一个生产者发出消息只能有被一个消费者所消费后,其他的消费者是得不到的,因为该条消息是一次性的,进入队列后在从队列中,在队列中什么也没有发生变化,而且队列形象的象个直通子的容器,只是让这条消息在里面呆了一阵子而已,无它。
这是我理解下的消息点对点模式图:
附件:程序的运行结果:
第3.3 案例2: 工作队列 job queue的更多相关文章
- RabbitMQ学习总结 第三篇:工作队列Work Queue
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
- RabbitMQ入门:工作队列(Work Queue)
在上一篇博客<RabbitMQ入门:Hello RabbitMQ 代码实例>中,我们通过指定的队列发送和接收消息,代码还算是比较简单的. 假设有这一些比较耗时的任务,按照上一次的那种方式, ...
- Linux内核中的软中断、tasklet和工作队列具体解释
[TOC] 本文基于Linux2.6.32内核版本号. 引言 软中断.tasklet和工作队列并非Linux内核中一直存在的机制,而是由更早版本号的内核中的"下半部"(bottom ...
- Linux软中断、tasklet和工作队列
Linux内核中的软中断.tasklet和工作队列详解 引言 软中断.tasklet和工作队列并不是Linux内核中一直存在的机制,而是由更早版本的内核中的“下半部”(bottom half)演变而来 ...
- [Linux内核]软中断、tasklet、工作队列
转自:http://www.cnblogs.com/li-hao/archive/2012/01/12/2321084.html 软中断.tasklet和工作队列并不是Linux内核中一直存在的机制, ...
- RabbitMQ入门(2)——工作队列
前面介绍了队列接收和发送消息,这篇将学习如何创建一个工作队列来处理在多个消费者之间分配耗时的任务.工作队列(work queue),又称任务队列(task queue). 工作队列的目的是为了避免立刻 ...
- 《深入理解Linux内核》软中断/tasklet/工作队列
软中断.tasklet和工作队列并不是Linux内核中一直存在的机制,而是由更早版本的内核中的“下半部”(bottom half)演变而来.下半部的机制实际上包括五种,但2.6版本的内核中,下半部和任 ...
- Linux中的工作队列
工作队列(work queue)是Linux kernel中将工作推后执行的一种机制.这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于 ...
- 【数据结构与算法】——队列(Queue)
队列(Queue)的一个使用场景 银行排队的案例: 队列(Queue)介绍 队列是一个有序列表,可以用数组或是链表来实现. 遵循先入先出的原则.即:先存入队列的数据,要先取出来.后存入的要后取出来. ...
随机推荐
- 使用layer.open时content属性传值记录
最近在做一个后台项目,正好碰上了要使用layer.open,就顺手记录一下,方便以后遇到了有个参考 - 2016/11/7 layer 这个是一个web弹层组件,挺好用的...然后项目框架是SSM.. ...
- 写日志 log 到文件夹
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- 搭建ubuntu14.04的hadoop集群【docker容器充当服务器】
首先弄出来装有hadoop.java.ssh.vim的镜像起名badboyf/hadoop.做镜像有两种方法,一种是用Dockerfile来生成一个镜像,一种是基于ubuntu14.04的基础镜像生成 ...
- ToolBar 修改边距
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android ...
- C#中使用Linq实现全外连接
每次使用都到处查阅,现在记录下来,备查. var fulljoin = (from s in sampleRegistersjoin t in tensionDatas on new { Beach ...
- 商业信息管理系统 Bizagi 建模pattern
WCP 1- Sequence This pattern is used to model dependencies between tasks so that one task cannot sta ...
- hihocoder挑战赛26
某蒟蒻成功的·写出了T1并rank16...小岛的题目真难... 传送门:http://hihocoder.com/contest/challenge26 T1 如果你想要暴力枚举的话显然是不行的 如 ...
- jquery实现搜索提示效果
1.想要实现的效果如下:其实与百度地图的城市切换部分是一样的. 代码如下:其中的知识点包括($.inArray(test,array)>0 判断test是否在数组array中)($(&quo ...
- QT-4.8.6 编译配置过程
1.编译 TSLib sudo apt-get install automake autogen libtool libtool-bin./autogen.sh./configure --host=a ...
- Yann LeCun, Geoffrey E. Hinton, and Yoshua Bengio