作为学习RabbitMQ和python的一种方法,我正在开发一个项目,允许我在许多计算机之间分发h264编码.完成了基础知识,我有一个在Linux或Mac上运行的守护程序,它连接到队列,接受作业并使用HandBrakeCLI对它们进行编码,并在编码完成后确认消息.我还构建了一个简单的工具来将项目推入队列.
现在我想扩展将项目推入队列的工具的功能,以便我可以查看队列中的内容.我知道能够看到队列中有多少项目,但我希望能够获得实际的消息,这样我就可以显示正在等待编码的电影或电视节目.我们的想法是,队列管理器将在作业完成后从编码器客户端接收消息,然后刷新队列列表.
我知道有一种令人费解的方法可以保持队列管理器的列表与实际工作队列同步,但我希望这是"持久的",因为我应该能够关闭队列管理器并稍后重新打开以查看队列.
对于我工作的公司,我们希望使用RabbitMQ作为我们的主要消息总线.我们的想法是每个应用程序都使用自己的vhost进行内部通信,通过铲子或联合插件,我们可以跨多个vhosts共享某些类型的事件(甚至可能是多台机器(非群集)) .我们选择每个vhost的应用程序将内部通信与公共事件分开,并保持每个应用程序的安全性可调.
基于在RabbitMQ网站上发布的信息,当我不得不选择铲子或者我必须选择联合插件时,我不会得到它.
RabbitMQ具有以下说明何时使用:
通常,当您需要比联合提供的更多控制时,您可以使用铲子在互联网上链接经纪人.
当我选择联邦时,我所缺少的铲子中的细粒控制是什么?
此时我想我更喜欢联合插件,因为我可以通过联合插件提供的REST API自动进行vhost间通信.在铲子的情况下,我需要更改铲子配置并在每次我们想要在vhost之间共享事件时重新启动RabbitMQ实例.我的想法是否正确?
我们目前在Windows上运行RMQ,客户端从.NET连接.在不久的将来,Java/Perl/PHP客户端将加入.
总结一下我的问题:
这些amqp客户端库有什么区别?哪一个是最推荐的?有哪些主要区别?
流处理和传统消息处理之间的基本区别是什么?正如人们所说kafka是流处理的不错选择,但本质上kafka是一个类似于ActivMQ,RabbitMQ等的消息传递框架.
为什么我们通常不会说ActiveMQ也适用于流处理.
是否消费者使用消息的速度决定它是否是流?
在我的团队工作中,我们使用IBM MQ技术进行跨应用程序通信.我最近看过Hacker News和其他关于RabbitMQ等其他MQ技术的地方.我对它是什么有一个基本的了解(一个常见的检查区域来放置和获取消息),但我想知道它究竟擅长什么?我怎么知道我想在哪里使用它以及何时使用它?为什么不坚持使用更基本的进程间消息传递形式?
我一直在为我的公司评估消息传递技术,但我对几个术语之间的概念差异感到非常困惑:
发布/订阅与多播与扇出 我正在使用以下定义:
这些定义是对的吗?或者Pub/Sub模式和组播,直接,扇出等方式来实现模式?
我正在尝试将开箱即用的RabbitMQ定义应用到我们的架构中,但我现在只是试图为我们的应用程序编写规范.
请有人可以告诉我,我是否正确?
RabbitMQ站点上有一个PHP客户端列表.我问这个问题,希望那些使用过这些问题的人可以在这里分享他们的经历.例如
即使您刚刚使用过其中一个库,也请分享您的经验.
作为参考,这里列出了一些客户:
PS我知道"最好......"是"主观的",但问题的关键在于收集经验并帮助人们对这些AMQP图书馆做出明智的决定.请不要只是因为它里面有"最好"这个词而不得不关闭这个问题.
PPS我在RHEL 5上使用PHP 5.3.
我需要一个python客户端,可以在重新启动的RabbitMQ服务器交换机上发现队列,然后启动客户端以恢复消耗来自每个队列的消息.如何从兼容RabbitMQ的python api /库中发现队列?
我有一个python应用程序,我想在后台开始做更多工作,以便它变得更加繁忙,因为它变得更加繁忙.在过去,我使用Celery来完成正常的后台任务,这一点运作良好.
这个应用程序和我过去做过的其他应用程序之间的唯一区别是我需要保证这些消息得到处理,它们不会丢失.
对于这个应用程序,我不太关心我的消息队列的速度,我首先需要可靠性和耐用性以及formost.为了安全起见,我希望有两个队列服务器,两个都在不同的数据中心,以防出现问题,一个是另一个的备份.
看看Celery看起来它支持一堆不同的后端,有些后端具有更多功能.两个最流行的看起来像redis和RabbitMQ所以我花了一些时间来进一步检查它们.
RabbitMQ: 支持持久队列和群集,但是它们今天进行群集的方式的问题是,如果丢失群集中的节点,则该节点中的所有消息都将不可用,直到您将该节点重新联机为止.它不会复制群集中不同节点之间的消息,只是复制有关消息的元数据,然后返回到原始节点以获取消息,如果节点未运行,则为SOL Not理想.
他们建议解决这个问题的方法是设置第二台服务器并使用DRBD复制文件系统,然后运行pacemaker之类的东西,以便在需要时将客户端切换到备份服务器.这似乎很复杂,不确定是否有更好的方法.谁知道更好的方法?
Redis: 支持一个读取从站,这将允许我在紧急情况下备份,但它不支持主 - 主设置,我不确定它是否处理主站和从站之间的主动故障转移.它没有RabbitMQ那样的功能,但看起来更容易设置和维护.
问题:
设置芹菜的最佳方法是什么,以保证消息处理.
有没有人这样做过?如果是这样,会分享您的所作所为吗?
我在重启rabbitmq服务时遇到一个奇怪的错误,因此我无法重启RabbitMQ服务.我从EventViewer收到此消息并试图通过谷歌搜索找到解决方案,但没有运气..请建议.
RabbitMQ:Erlang机器自愿停止.由于OnFail设置为ignore,因此不会重新启动该服务.
谢谢