rabbitmq 传递文件

本月初,我在ComoRichWeb上的RabbitMQ上做了一个演讲,与会人员提出的一个问题是“是否可以发布一条消息供以后使用?” 我回答说,就我所知,这是不可能的,但是可能会有一些技巧来实现它。 好吧,今天晚上,在试图弄清楚如何将推送与轮询模型用于定时通知时,我发现了一个使用临时队列,x-message-ttl和死信交换的巧妙技巧。

其背后的主要思想是利用2.8.0中可用的新功能, 即死信交换 。 此AMQP扩展允许您在队列中指定一个交换,当消息过期或被拒绝且requeue设置为false时,消息应发布到该队列上。

考虑到这一点,我们可以为要稍后发送的消息创建一个队列,将x-message-ttl设置为我们希望在发送之前等待的持续时间。 为了确保消息被传输到另一个队列,我们​​只需将x-dead-letter-exchange定义为我们创建的交换(在这种情况下,我将其称为即时交换),然后将队列绑定到该交换(“ right.now。队列”)。

在带有node-amqp的coffeescript中,这看起来像这样:

amqp   = require 'amqp'
conn   = amqp.createConnection()key = "send.later.#{new Date().getTime()}"
conn.on 'ready', ->'conn.queue key, {arguments:{"x-dead-letter-exchange":"immediate", "x-message-ttl": 5000}}

接下来,我定义立即交换,将队列绑定到它并订阅。

conn.exchange 'immediate'conn.queue 'right.now.queue', {autoDelete: false, durable: true}, (q) ->q.bind('immediate', 'right.now.queue')q.subscribe (msg, headers, deliveryInfo) ->console.log msgconsole.log headers

最后,在定义了我之前创建的队列之后,我们要在其上发布一条消息。 因此,为了重新访问先前的队列定义,我们添加了一个publish调用,以直接发布到队列(使用默认交换)。

conn.on 'ready', ->conn.queue key, {arguments:{"x-dead-letter-exchange":"immediate", "x-message-ttl": 5000}}, ->conn.publish key, {v:1}, {contentType:'application/json'}

运行此命令的结果是我们将等待5秒钟,然后将消息内容和标头转储到控制台。 由于该队列仅在此情况下临时使用,因此我还将队列的x-expires属性设置为在消息过期后的合理时间内过期。 这确保了我们不会在周围坐满大量未使用的队列。

这是整个练习的结果。

amqp   = require 'amqp'
events = require 'events'
em     = new events.EventEmitter()
conn   = amqp.createConnection()key = "send.later.#{new Date().getTime()}"
conn.on 'ready', ->conn.queue key, {arguments:{"x-dead-letter-exchange":"immediate", "x-message-ttl": 5000, "x-expires": 6000}}, ->conn.publish key, {v:1}, {contentType:'application/json'}conn.exchange 'immediate'conn.queue 'right.now.queue', {autoDelete: false, durable: true}, (q) ->q.bind('immediate', 'right.now.queue')q.subscribe (msg, headers, deliveryInfo) ->console.log msgconsole.log headers

您可以在github上完整地获得此练习。

这非常有趣,我计划在我的生产node.js应用程序之一中利用它进行进一步实验,该应用程序使用基于间隔的轮询来触发计划的事件。

参考: 敏捷开发人员博客的Rants and Musings中我们的JCG合作伙伴 James Carr 使用RabbitMQ进行的预定消息传递 。

翻译自: https://www.javacodegeeks.com/2012/04/rabbitmq-scheduled-message-delivery.html

rabbitmq 传递文件

rabbitmq 传递文件_RabbitMQ:计划邮件传递相关推荐

  1. RabbitMQ:计划邮件传递

    本月初,我在ComoRichWeb上的RabbitMQ上做了一个演讲,与会人员提出的一个问题是"是否可以发布一条消息供以后使用?" 我回答说,就我所知,这是不可能的,但是可能会有一 ...

  2. rabbitmq 传递文件_使用RabbitMQ进行消息传递

    rabbitmq 传递文件 RabbitMQ是一个强大的消息代理,可用于实现不同的消息传递模式. 即使有出色的教程 (使用不同的语言和框架),也很难理解这些概念. 在这篇文章中,我想展示一些可以用Ra ...

  3. Linux中进程间传递文件描述符的方法

    在进行fork调用后,由于子进程会拷贝父进程的资源,所以父进程中打开的文件描述符在子进程中仍然保持着打开,我们很容易的就将父进程的描述符传递给了子进程.但是除了这种情况下,如果想将某个父进程在子进程创 ...

  4. Vue 单文件中的数据传递

      Vue 的单文件组件在使用 Vue 时非常常用,所以我们也会经常遇到组件之间需要传递数据的时候,大致分为三种情况: 父组件向子组件传递数据,通过 props 传递数据. 子组件向父组件传递数据,通 ...

  5. linux与linux传文件乱码,关于Linux与windows传递文件乱码问题

    linux下一般是采用utf-8的编码,而我们在windows上编辑文件时是gb2312的编码.所以导致中文编码会乱码.要更正这个问题实际上很简单只要把文件转换成utf-8编码格式然后再导入就ok啦. ...

  6. Linux的辅助数据和传递文件描述符

    简介 首先,明确传递文件描述符的意义.一般来说,在多进程网络编程中,我们设置一个主进程用于监听新来的连接,设置一个进程池,用于处理这些连接.但是,与线程池不同,进程池各个进程之间的空间是独立的,直接共 ...

  7. windows查看linux文件工具,「实用工具」介绍几款Windows系统与Linux服务器传递文件的工具...

    本文主要介绍几款用于和linux服务器传递文件的工具 WinSCP WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端.同时支持SCP协议.它的主要功能就是在本地与远程计算机间 ...

  8. android进程间传递文件描述符原理

    在Linux中,进程打开一个文件,返回一个整数的文件描述符,然后就可以在这个文件描述符上对该文件进行操作.那么文件描述符和文件到底是什么关系?进程使用的是虚拟地址,不同进程间是地址隔离的,如何在两个进 ...

  9. 进程间传递文件描述符--sendmsg,recvmsg(可用)

    UNIX域套接字可以在同一台主机上各进程之间传递文件描述符. 下面先来看两个函数: #include <sys/types.h> #include <sys/socket.h> ...

最新文章

  1. iOS安全攻防(八)Thoes的Logos简介
  2. 通过注册表修改默认浏览器设置
  3. TThread深入分析
  4. 赋值运算符(AssignmentOperator)
  5. 【BZOJ1202】【HNOI2005】狡猾的商人
  6. Python 数据科学入门教程:TensorFlow 聊天机器人
  7. 笔记5 | 监听scroollview、listview、gridview页面滑动,判断是否滑动到顶部以及底部...
  8. t–sql pl–sql_T-SQL for DBA –使用T-SQL进行快速数据分析的三种方法
  9. 再谈new functionName
  10. html的canvas代码,HTML
  11. centos光盘修复引导_CentOS7修复安装
  12. oracle alter database,DBA常用命令之alter database
  13. 计算机用户中的配置文件,我的电脑的用户配置文件中多了一个未知的帐户 – 手机爱问...
  14. 一款开源免费的网站监控系统
  15. 双一次算法作业hhhhhhhhh
  16. php数据库中有痣但是有时取不到,怎么判断脸上的痣会不会癌变?有这些情况就要警惕是皮肤癌...
  17. oracle 修改时间字段的格式
  18. nslookup命令使用技巧(一)
  19. 高新技术企业人才引进困境与对策研究
  20. JavaScript漂浮广告效果

热门文章

  1. javafx之TableView的FXCSS
  2. 你胆敢不加break试试?
  3. 微内核操作系统能做服务器系统吗,科普:微内核操作系统现状
  4. 玩物得志Java笔试题_代码规范利器-CheckStyle
  5. rpa文件怎么提取内容_怎么编辑pdf文件内容?有什么软件可以编辑pdf文件吗?
  6. removeAll throws java.lang.UnsupportedOperationException
  7. ssh无密码登陆权威指南
  8. idea内置junit5_JUnit 5和Selenium –使用Selenium内置的`PageFactory`实现页面对象模式
  9. 使用junit进行单元测试_使用JUnit对ADF应用程序进行单元测试
  10. java中线程死锁及避免_如何避免Java线程中的死锁?