Tag: 消息队列

互操作性Azure服务总线消息队列消息

我有一个Java应用程序和一个NodeJS应用程序都使用一个单一的Azure服务总线消息队列。 我跟我的客户见证了一些奇怪的效果,如下所示。 JAVA MESSAGE PRODUCER(每个Azure JMS教程使用QPID库): TextMessage message = sendSession.createTextMessage(); message.setText("Test AMQP message from JMS"); long randomMessageID = randomGenerator.nextLong() >>>1; message.setJMSMessageID("ID:" + randomMessageID); sender.send(message); System.out.println("Sent message with JMSMessageID = " + message.getJMSMessageID()); 输出:使用JMSMessageID发送消息= ID:2414932965987073843 NODEJS消息消费者: serviceBus.receiveQueueMessage(queue, {timeoutIntervalInS: timeOut, isReceiveAndDelete: true}, function(err, message) { if(message !==null)console.log(util.inspect(message, {showHidden: false, depth: null})); }); OUTPUT: { body: '@\u0006string\b3http://schemas.microsoft.com/2003/10/Serialization/ \u001aTest […]

PHP进程间通信监视消息队列

我正在制作一个项目,在这个项目中,我为一个排行榜和其他几个位置创build了统计数据。 我的目标是尽可能实时地实现,所以为此我实现了一个用于消息队列的RabbitMQ服务器。 在前端,我有一个nodejs设置,将信息提供给正在观看的客户端。 在同一台服务器上,我有一个PHP进程来侦听队列并将消息logging到数据库中以获取历史logging。 我现在想要解决的是如何在不触及数据库的情况下在nodejs系统和该PHP进程之间进行通信。

“重新sorting”消息在无序处理之后

我正在研究基本上是高度可用的分布式消息传递系统。 系统通过HTTP或TCP接收来自某个地方的消息,对其执行各种转换,然后将其发送到一个或多个目的地(也使用TCP / HTTP)。 系统要求发送到给定目的地的所有消息都是有序的,因为一些消息build立在以前的内容上。 这限制了我们按顺序处理消息,每条消息大约需要750ms。 所以如果有人发送给我们,例如,每250ms一条消息,我们不得不将消息排在对方之后。 这最终会在高负载下的消息处理中引入无法忍受的延迟,因为每个消息在轮到它之前可能不得不等待数百个其他消息被处理。 为了解决这个问题,我希望能够并行化我们的消息处理,而不会破坏我们发送它们的顺序的要求。 我们可以轻松地横向扩展处理。 丢失的部分是一种确保即使消息被乱序处理也将被“重新sorting”并按照接收顺序发送到目的地的方法。 我试图find实现这一目标的最佳方法。 Apache Camel有一个叫Resequencer的东西 ,它包含了一个很好的图(我没有足够的代表直接embedded)。 这正是我想要的:把乱序信息放在一边的东西。 但是,我不希望它是用Java编写的,我需要的解决scheme是高度可用的(即抵制典型的系统故障,如崩溃或系统重启),我不认为Apache Camel提供。 我们的应用程序是用Node.js编写的,使用Redis和Postgresql来进行数据持久化。 我们使用Kue库来处理消息队列。 尽pipeKue提供了优先级排队function,但function集对于上述用例来说太有限了,所以我认为我们需要一种替代技术与Kue一起重新sorting我们的消息。 我试图在网上研究这个话题,而且我也找不到像我预期的那么多的信息。 看起来像分布式架构模式的types将有文章和实现丰富,但我没有看到这么多。 search诸如“消息重新sorting”,“乱序处理”,“并行消息处理”等等的东西,大多只是放松了基于分区或主题或者什么的“有序”需求的解决scheme。 或者,他们谈论在一台机器上的并行化。 我需要一个解决scheme: 可以按任意顺序同时处理多个消息。 无论按照什么顺序处理,总会按照到达系统的顺序发送消息。 可以从Node.js使用 可以在高可用性环境下运行(即在同一消息队列上运行的多个实例不会出现不一致)。 我们目前的计划对我来说是有意义的,但在网上任何地方我都找不到。我们现在的计划是使用Redis来维护一套正在进行的和准备发送的消息,按照到达时间进行sorting。 粗略地说,它的工作原理是这样的: 当收到消息时,该消息被放置在正在进行的设置中。 当消息处理完成时,该消息被置于准备发送集合上。 只要在进行中和准备发送的集合的前面有相同的消息,就可以发送该消息并且按顺序发送。 我将编写一个小型的Node库,使用primefacesRedis事务,使用优先级队列式API实现此行为。 但是这只是我自己想出来的,所以我想知道:是否有其他技术(理想情况下使用Node / Redis堆栈,我们已经在这里)解决重新sorting无序消息的问题? 还是有其他一些术语可以用作研究的关键字吗? 谢谢你的帮助!

RabbitMQ:如何限制消费率

我需要限制从rabbitmq队列中消费消息的速度。 我发现了很多build议,但是其中大多数提供使用预取选项。 但是这个选项并没有做我所需要的。 即使我将预取设置为1,速率也是大约6000个信息/秒。 这对消费者来说太多了。 我需要每秒限制大约70到200条消息。 这意味着每5-14ms消耗一个消息。 没有同时消息。 我正在使用Node.JS和amqp.node库。

Heroku上的Node JS消息队列

我需要将在Heroku上运行的Node JS服务器移动到消息队列体系结构中。 目前,服务器收到一个HTTP请求,做一些处理,并作出响应。 问题是处理需要一些时间,特别是当有很多请求时。 这种冗长的处理时间会导致服务器超时,超载和崩溃! 我的阅读告诉我需要一个后台工作人员来处理。 我对消息队列和后台工作者没有任何经验,我正在寻找一个非常简单的例子来开始。 任何人都可以build议一个简单的,可以理解的模块或例子来开始? 我发现了一些例子,但它们很复杂,我迷路了! 我想要一个我可以build立的准系统的例子。

workerj队列的工作?

我正在开始使用节点的集群API和mongoose为节点写一个工作队列。 我注意到有很多libs已经这样做,但使用redis和fork。 是否有一个很好的理由与使用群集API分叉? 编辑 ,现在我也发现这个: https : //github.com/xk/node-threads-a-gogo – 太多的select! 我宁愿不添加redis,因为我已经使用了mongo。 另外,我的要求是非常宽松的,我想要坚持,但可以没有它的第一个版本。 问题的第二部分:今天最稳定/使用的nodejs工作队列库有哪些?

Node.js的进程间事件发送器?

目前,我在应用程序中使用EventEmitter2作为消息总线,我非常喜欢它。 无论如何,现在我需要一个消息总线,它不仅在进程中工作,而且还在进程之间。 我理想的候选人会… …与EventEmitter2(一个“插入replace”)API兼容, …没有专门的服务器或外部服务(如数据库,消息队列等),仅使用操作系统资源, …用纯JavaScript编写, …在内存中运行,所以它不需要持久性。 我不需要的东西: 它不需要在Windows上运行,OS X和Linux都可以。 如果它只能在一台机器上运行,那就没有必要了。 任何想法或提示? PS:如果你可以推荐一个可用的产品,那也挺好的,但是如果你能指出我自己如何做无服务器的东西,那也没关系。

实施可伸缩聊天服务器的策略

我正在寻找实施某种聊天服务器。 我希望它能够扩展。 这似乎是一个很大的问题,所以我想我希望答案是方向指针,有点探索性。 最终用户客户端是networking或电话客户端。 我认为某种websocket的实现,比如Socket.IO很好。 在服务器端,我希望使用Node.js. 我希望架构能够扩展,以便用户数量不受限制(在理性的情况下,没有预料到大规模攻击的可能性,如果是这样,有更聪明,有经验的人在其上工作的机会是合理的而不是目前只是我编码)每个聊天室的用户数量有希望不受限制,或者可能是一些固定的大数目。 这意味着我需要使用几个在Node中编写的服务器水平扩展。 假设有一些负载平衡器(希望将来不是单点失败,但我不知道如何实现这一点,或者也许只是转移到AWS)将调度从最终客户端到聊天服务器的SocketIO连接。 不同的用户连接到不同的服务器可能在同一个房间,所以这些消息需要发送到其他服务器。 我将如何切实执行这样的事情? 希望不要太复杂。 问题:(1)如果所有的服务器需要处理所有的消息,因为用户可以通过任何服务器login,这是否规模? (2)我需要某种消息队列让服务器在它们之间进行交谈吗? Rabbitmq的Pub-sub是否可用? 或者,如果zeromq,我将如何扩大酒吧子? Zeromq指南解释了使用REQ / REPtypes的应用程序扩展到多个服务器的情况。 但不是Pub Sub。 (3)或者我应该从XMPP开始? 我希望能够尽可能地简化工作。

节点的JS工作人员 – 任何需要他们?

原谅我的无知,但来自Django / Python的背景,我可以看到有一个Celery队列在后台较慢的过程中工作,同时尽可能快地更新Web界面的巨大好处。 但是,在Nodeasynchronous工作的情况下,队列系统的用例是否会大大减less呢? 例如: 1 – 用户向网站发帖,2 – 网站回应,然后邮寄给pipe理员。 在Django中,您将发送pipe理邮件到任务,稍后执行,然后响应请求。 芹菜在后台发送邮件。 在节点中,你打电话给你的邮件,然后回应请求。 然后邮件发送一个回叫说或不,用户已经看到这个回应。 那么,为什么我会用Node的队列呢? 我在猜测什么时候事情比这更复杂 – 似乎对于交易邮件这样的微不足道的事情来说,这是没有必要的。 还是我误解它是如何工作的?