Tag: amqp

具有工作队列devise模式的API

我正在build立一个连接到工作队列的API,并且在结构上遇到了麻烦。 我正在寻找的是一个通过API接口的工作队列的devise模式。 细节: 我正在使用Node.js服务器和Express来创build一个接受请求并返回JSON的API。 这些请求可能需要很长时间才能处理(数据密集型),所以这就是我们使用排队系统(RabbitMQ)的原因。 因此,例如让我说,我发送一个请求到API将需要15分钟处理。 Express API格式化请求并将其放入RabbitMQ(AMQP)队列中。 下一个可用的工作人员将请求从队列中取出并开始处理。 完成后(在这种情况下15分钟)它将数据保存到MongoDB中。 …. 怎么办 ….. 我的问题是,如何将完成的数据返回给API的调用者? 调用者是一个完全独立的程序,通过类似于Ajax请求的方式与API联系。 工作人员将处理的数据保存到数据库中,但我无法推回到原来的调用程序。 有没有人有任何API的工作队列资源? 谢谢,麻烦您了。

如何使用AMQP在“PeekLock”模式下从Azure服务总线队列获取消息?

我们正在尝试在Node应用程序中使用Azure服务总线。 我们的要求是从队列中获取多个消息 。 由于Azure SDK for Node不支持批量检索,因此我们决定使用AMQP。 虽然我们可以按照此处所述使用Peek邮件获取邮件( https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-amqp-request-response#message-operations )。 我们注意到,只要消息被提取,它们就会从队列中移除。 我想知道是否有人了解如何使用AMQP和节点以“PeekLock”模式获取消息。 对于AMQP,我们使用的是amqp10节点包( https://www.npmjs.com/package/amqp10 )。 这里是我们的邮件偷看的代码: const AMQPClient = require('amqp10/lib').Client, Policy = require('amqp10/lib').Policy; const protocol = 'amqps'; const keyName = 'RootManageSharedAccessKey'; const sasKey = 'My Shared Access Key' const serviceBusHost = 'account-name.servicebus.windows.net'; const uri = protocol + '://' + encodeURIComponent(keyName) + ':' + encodeURIComponent(sasKey) + […]

如何停止绑定到AMQP默认交换?

每次我将一个AMQP队列绑定到一个交换机上,它似乎自动绑定到“默认”直接交换。 以下是使用rabbitMQ服务器和node.js的代码: var amqp = require('amqp'); var connection = amqp.createConnection({host:'localhost'}); connection.on('ready', function(){ var q = connection.queue('test_queue_name'); var exc = connection.exchange('test_exchange', { autoDelete:true }); q.bind('test_exchange', 'test.key'); }); 以下是使用“rabbitmqctl list_bindings”命令时的控制台输出: Listing bindings … exchange test_queue_name queue test_queue_name [] test_exchange exchange test_queue_name queue test.key [] …done.

如何使用node-amqp获取队列中的消息数量

我在节点应用程序中使用node-amqp作为排队系统。 我希望能够监视队列的状态,以确定是否有足够的工作人员正在运行,即如果队列大小正在增加,我们知道我们已经开始落后了。 我知道,从命令行你可以使用类似的东西; rabbitmqctl list_queues 这给了我需要的确切信息,但是我想知道是否有任何方法可以从node-amqp本身执行此操作? 提前致谢。 编辑 最后,我只是使用命令行工具rabbitmqctl来获取我需要的信息,这不是一个很好的解决scheme,但这是我做的; var Logger = require('arsenic-logger'); getQueueMeta(function(info){ Logger.info(info); }); /** * Returns a sparse array with the queue names as the indices * and the number of messages as the value, eg; * * info = [ my-queue: 9, my-other-queue: 1 ] * * @param callback */ function […]

在nodejs中相当于pythons“pickle”

Python的一个特性就是picklefunction,它允许你存储任意的任何东西,并将其完全恢复到原来的forms。 一个常见的用法是采取一个完全实例化的对象,并腌制它以备后用。 在我的情况下,我有一个不可序列化的AMQP消息对象,我希望能够将它存储在会话存储中,并检索它,我可以用pickle做。 主要的区别是我需要调用对象的方法 ,我不只是在寻找数据。 但是这个项目在nodejs中,好像所有节点的低级库都必须有一些方法来保存这个对象,这样它才能在Web调用之间保持。 用例是一个网页拿起一个RabbitMQ消息并显示从它派生的信息。 我不希望在消息发生作用之前确认消息。 我通常只是将数据保存在会话状态,但这不是一个选项,除非我能以某种方式保存在原来的forms。

如何从amqplib库使用node.JS的channel.assertQueue函数?

我正在开发一个使用RabbitMQ和Node.JS的消息应用程序。 我正在使用amqplib来达到这个目的。 我是Node.JS的新手,在理解amqplib的语法时遇到了一些困难。例如有一个声明队列的函数,那就是 channel.assertQueue([queue, [options, [function(err, ok) {…}]]]); 我从前2-3天一直提到这一点 ,但我仍然不清楚这些 – > err和ok 。 如何使用这些参数? 一个例子将非常感激。

如何在angular js中实现rabbitmq

我使用节点js resful api和amqp来处理api请求。 rabbitMQ在Node js中工作正常,但是在js中是不可能的。 我怎样才能在客户端angularjs脚本实现amqp。

node-amqp不能发送消息给RabbitMQ

我正在使用rabbitmq-tutorials ,ruby版本正常,但是node.js版本不能发送消息。 我不知道什么是错的。 var amqp = require('amqp'); var amqp_hacks = require('./amqp-hacks'); var connection = amqp.createConnection({host: 'localhost'}); connection.on('ready', function(){ connection.publish('hello_node', 'Hello World!'); console.log(" [x] Sent 'Hello World!'"); amqp_hacks.safeEndConnection(connection); }); 在运行node send.js ,运行进程node recv.js不能node recv.js任何东西。 而rabbitmqctl list_queues不显示hello_node队列。

如何使用node.js amqp模块将AQMP消息缓冲区转换为JSON对象?

我正在使用node.js amqp模块来读取队列中的消息。 以下是队列中有消息时调用的callback函数: function onMessage(message, headers, deliveryInfo) { console.log(message); //This prints buffer //how to convert message (which I expect to be JSON) into a JSON object. //Also how to get the JSON string from the 'message' which seems to be a buffer } 谢谢。

从STOMP / AMQP中select哪一个?

我使用node.js作为jms topic的客户端。有两个协议可用于在Topic上进行连接。 这些是Stomp和AMQP。 我在http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol和http://en.wikipedia.org/wiki/Streaming_Text_Oriented_Messaging_Protocol上了解他们的简介。 两者似乎都是有线协议,即通过networking作为八位字节stream发送的数据。我没有发现任何一个应该被优选的具体原因。 如果有人能阐明它,这将是有益的。 还有一点是协议引以为傲的说他们互通。 互操作术语意味着如果有人想要脱离特定的消息代理实现说apache主动MQ,而是想要插入Websphere MQ,过渡将是平稳的(既提供支持AMQP / STOMP或任何其他有线协议)?