虽然redis和消息排队软件通常用于不同的目的,但我想问一下使用redis的优缺点以下用例:
你知道redis选择传统消息排队软件的用例吗?或者你会考虑别的吗?
注意:我也看过这个但没有帮助: 实时应用新手 - Node.JS + Redis或RabbitMQ - >客户端/服务器怎么样?
谢谢
OK,我一直在阅读有关的celery和rabbitmq,而我很欣赏的项目和文档的努力,我仍然感到困惑了很多东西.
http://ask.github.com/django-celery/
我很困惑芹菜是否仅适用于Django或独立服务器,因为第二个链接声称celery与Django紧密相关.两个网站都展示了不同的设置和使用方式celery,这对我来说是混乱的.
足够的咆哮,有没有合适的书我可以买?
我们在大型聊天应用程序中使用socketIO.
在某些时候,我们希望向所有其他用户发送"在线状态"(用户可用性).
io.in('room1').emit('availability:update', {userid='xxx', isAvailable: false});
Run Code Online (Sandbox Code Playgroud)
room1可能包含很多用户(最多500个).当触发许多可用性更新时,我们观察到NodeJS负载显着增加.
我的想法是使用与Socket IO类似的redis商店.让Web浏览器客户端连接到不同的NodeJS服务器.
当我们想要发射到房间时,我们使用Redis PubSub ZeroMQ甚至RabbitMQ将"emit to room1"有效负载分配给所有其他NodeJS进程以实现持久性.每个进程本身都会调用自己的io.in('room1').emit目标来定位其连接用户的子集.
这种设置的一个问题是进程间通信可能变得非常繁忙,我想知道它是否会成为未来的问题.
这是我想到的架构.

我正在研究如何确定我们未来产品的解决方案,我无法真正理解这一点.
有一堆AMQP 0.9.1实现(RabbitMQ,Apache Qpid,OpenAMQ,仅举几例),但没有AMQP 1.0实现,尽管1.0已经在2011年10月完成.好吧,除了SwiftMQ [1].
阅读1.0,它似乎与1.0之前的规范有很大的不同,所以似乎可以理解的是,对一些工作正常的重大改写几乎没什么热情.事实上,我不明白为什么RabbitMQ和其他人不会决定迁移到ZeroMQ而不是AMQP 1.0.
尽管如此,除了一些模糊的承诺,例如"努力始终实施最新的AMQP规范"之外,我还没有找到任何关于1.0 AMQP前规范的实施者的明确声明.
编辑: RabbitMQ确实说
然而,有些东西告诉我,声明已超过3年,即它早于AMQP 1.0的发布.
那么有没有迹象表明AMQP 1.0可能成为一个标准,除了主要银行 - 和微软 - 支持它的事实?顺便说一句.没有自己的实现.
看起来AMQP 0.9.1似乎比1.0更标准.
嗯,有https://github.com/rabbitmq/rabbitmq-amqp1.0,它自称的状态是原型,显然没有工作半年.
[1]我对SwiftMQ的第一印象是我通过其作者对Spring缺乏AMQP支持的咆哮得到的,这就是为什么我暂时不考虑它.我不想指望那个家伙的支持.
我正在尝试运行以下命令
rabbitmq-plugins.bat enable rabbitmq_management
Run Code Online (Sandbox Code Playgroud)
它给我一个错误无法创建cookie文件h:/.
我使用的是Windows 7,Erlang版本R16B01和RabbitMQ-Server 3.1.5版
我正在使用我的工作PC,我们的公司政策将HOMEDRIVE设置为h:和HOMEPATH为/我不认为他们会让我改变这一点.
我可以在C:\ Windows下看到.erlang.cookie文件.
有人能让我知道一个解决方法吗?
提前致谢 !
好的..所以我开始研究MQ及其目的/用例等...我现有的应用程序(使用JSP等制作的Web)使用RestFUL接口与远程服务器通信并从服务器发布/接收数据.
我们经常要处理远程服务器的连接问题.同步问题总是在那里.
从我们的结束发送的消息.但是远程服务器发生故障.或相反亦然.
我遇到了MQ的事情,并发现在从远程服务器发送和接收消息时它是可靠的.
但同样,使用REST我认为对MQ的整个需求似乎有点模糊.我基本上在寻找MQ和RestFUL之间的一些差异.
我在其他博客文章中看到,随着RestFUL领域研究的不断增加,MQ的速度将逐渐放松.
我对MQ没有太多了解,所以不会发表任何评论,但肯定与RestFUL合作很有趣.
如果有人提供使用RestFUL和MQ之间的差异,将不胜感激.
我刚刚做了最新的OS X特立独行更新,我很惊讶看到rabbitMQ并不适合工作.我收到以下错误:
MacBook-Pro-de-Julio:~ julio$ rabbitmq-server
ERROR: epmd error for host MacBook-Pro-de-Julio: address (cannot connect to host/port)
Run Code Online (Sandbox Code Playgroud)
我使用的是独立版本rabbitMQ.我尝试重新安装它没有任何成功.当我运行hostname命令时,我得到以下结果:
MacBook-Pro-de-Julio:~ julio$ hostname
MacBook-Pro-de-Julio.local
Run Code Online (Sandbox Code Playgroud)
你知道如何解决这个问题吗?
编辑1:
通过关闭Wifi,我可以成功运行rabbitMQ.如果我打开它,我无法启动rabbitMQ.
编辑2:
感谢@old_sound的答案,我通过编辑我的问题解决了这个问题/etc/hosts.
我的芹菜任务在两者之间停止执行.我的rabbitmq停在中间,然后我需要手动重启它.上次(15-16小时后),类似的问题发生了,我做了以下(手动),它又开始工作了.
我重新安装了rabbitmq,然后又开始工作了.
sudo apt-get --purge remove raabitmq-server
sudo apt-get install raabitmq-server
现在再次显示`
Celery - errno 111 connection refused
Run Code Online (Sandbox Code Playgroud)
以下是我的配置.
BROKER_URL = 'amqp://'
CELERY_RESULT_BACKEND = 'amqp://'
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT=['json']
CELERY_TIMEZONE = 'Europe/Oslo'
CELERY_ENABLE_UTC = True
CELERY_CREATE_MISSING_QUEUES = True
Run Code Online (Sandbox Code Playgroud)
请让我知道我哪里出错了?
我该如何纠正呢?
第2部分
另外,我有多个队列.我可以在项目目录中运行它,但是当妖魔化时,工作人员不接受任务.我仍然需要手动启动芹菜工人.我怎么能去除它呢?
这是我的celerd conf.
# Name of nodes to start, here we have a single node
CELERYD_NODES="w1 w2 w3 w4"
CELERY_BIN="/usr/local/bin/celery"
# Where to chdir at start.
CELERYD_CHDIR="/var/www/fractal/parser-quicklook/"
# Python interpreter from environment, if using virtualenv
#ENV_PYTHON="/somewhere/.virtualenvs/MyProject/bin/python" …Run Code Online (Sandbox Code Playgroud) 我粗略的理解是,如果您需要内存中的键值存储功能,Redis会更好,但是我不确定这与分发任务有什么关系?
这是否意味着我们应该将Redis用作消息代理,如果我们已经将其用于其他内容?
我有一个ASP.NET Core应用程序,我想使用RabbitMQ消息.
我已成功在命令行应用程序中设置发布者和使用者,但我不确定如何在Web应用程序中正确设置它.
我正在考虑初始化它Startup.cs,但当然一旦启动完成它就会死掉.
如何从Web应用程序以正确的方式初始化消费者?