日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

rabbitmq 传递文件_RabbitMQ:计划邮件传递

發布時間:2023/12/3 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rabbitmq 传递文件_RabbitMQ:计划邮件传递 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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:计划邮件传递的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。