问题标签 [cloudamqp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1717 浏览

ninject - 为从 ASP.NET MVC 和工作应用程序中使用 RabbitMQ 设计一个好的接口

在 AppHarbor 研究构建一个在 MVC4 上运行的 Web 应用程序。出于响应和性能的考虑,运行时间稍长的任务(通常是生成/发送电子邮件、调整图像大小、支付交易处理等)将通过将消息放在消息队列中来处理。

也会有一个或多个工作人员,在某个地方,将消息出列并处理任何需要处理的结果。中央队列机制是 RabbitMQ,特别是通过 AppHarbor 提供的托管 CloudAMQP 服务。从理论上讲,这种架构可以通过添加更多工作人员来实现“无限”可扩展性。

现在,为了良好的架构、可测试性等,我想将 RabbitMQ 放在一个或多个易于模拟的接口后面。在定义这些接口时,我需要考虑一些因素。

  • 在我获得任何付费用户之前,我仅限于免费的 CloudAMQP 产品。这意味着最多三个同时连接。
  • 鉴于前面的限制,我想尝试将自己限制为每个应用程序一个连接。一个用于 MVC 应用程序,每个工作人员一个。而已。
  • RabbitMQ 中的连接被设计为长期存在。尽管如此,许多示例显示了显式打开连接(然后是通道),发送消息,然后再次关闭它的代码。
  • 对于多线程,可以使用相同的连接,但不能使用相同的通道。据我了解,可以在多线程应用程序中共享连接,然后打开多个通道,例如每个线程一个。
  • 我的 MVC 应用程序通常只是一个发布者。工作者应用程序既是消费者又是发布者——例如,工作者可以接收处理付款的消息,这将导致它发布消息以调用电子邮件消息给用户,指示成功或失败。
  • 对于 MVC 应用程序,连接通常只使用很短的时间 - 用于排队消息。
  • 对于工人,我正在考虑长期运行的连接,或多或少地在工人的一生中永久开放。

好的,太好了,这就是很多东西。在这个项目之前没有任何使用 RabbitMQ 的经验,我被一些额外的要点困扰着。

  • 接口隔离原则。我应该把它分成两个独立的接口——比如 IQueueServiceConsumer 和 IQueueServiceProducer——还是太过分了?我发现我总是可以使用 SRP 等将事物进一步划分为更多的原子单元,而且我不希望 Bob 叔叔追捕我(比接口名称中的 I 更多),但我想知道我必须走多远拿着这个。
  • 鉴于我将只有一个网络服务器,至少一开始是这样,在网络应用程序中实际上与队列建立长期连接是否是一个想法?打开和关闭它们提供了同时发生多个的理论上的机会,这意味着冲突和潜在的信息丢失。消息丢失是不可接受的。
  • 在这种情况下,我将如何处理连接的生命周期?在我的 Ninject 模块中打开它(我的接口实际上绑定到特定于 RabbitMQ 的实现),并在应用程序被回收时以某种方式断开它...回收?我怎么能做那样的事情?
  • 对于工人来说,生活似乎更轻松了。在接口上放置一个方法来打开连接,然后为线程提供通道以获取消息。通过适当地调用 CloseConnection 来确保应用程序运行良好。或者实现 IDisposable。
  • 有一个机会——无论多么小——RabbitMQ 将来可能会被其他东西取代,因此我不希望我的接口过于特定于那个特定的服务总线(从某种意义上说,这就是我使用它的方式)执行。

在构建类似的应用程序时,其他人是否已经经历过同样的挑战?您对消息队列接口的架构和实际实现有什么建议吗?我只是对此感到神经质还是我的担忧值得承认?

如果重要的话,我当前的消息传递需求由单向消息覆盖,除了在处理完成后确认收到的消息之外不需要任何响应。

感谢您的任何见解!

0 投票
1 回答
2233 浏览

heroku - 使用 rabbitmqadmin 访问 CloudAMQP / Heroku

我开始学习 AMQP 和 RabbitMQ。

为了让自己继续前进,我使用了 CLI 工具 rabbitmqadmin,成功地将数据发布到了我在 Mac OS X 机器上创建的 RabbitMQ 开发安装。到目前为止一切顺利,我可以发布消息,并观看它们出列......

但是,当我在 Heroku / CloudAMQP 实例上尝试完全相同的功能时,rabbitmqadmin 客户端似乎崩溃了。

这是电话:

...这是输出:

感谢您收到任何想法或想法!

0 投票
2 回答
2211 浏览

django - Django/Celery 和 CloudAMQP/Heroku 的连接错误

我有一个已经部署到 Heroku 的 Django 应用程序。这个应用程序使用 Celery 进行消息队列,我已经使用 RabbitMQ 在本地运行它,没有发生任何事故。

不幸的是,当我将这个婴儿部署到 Heroku 时,我发现 RabbitMQ 插件不可用,我必须使用 CloudAMQP。CloudAMQP 和 Heroku 的文档让我相信我可以使用 Celery(即使他们推荐 Pika),但是当我尝试部署时,我的调度程序和工作进程都会遇到严重的连接错误。以下是确切的错误:

我应该注意我的 Heroku 配置变量确实有一个 CLOUDAMQP_URL,所以这应该不是问题吗?

如果有人将 CloudAMQP 与 Django/Heroku 一起使用,我将不胜感激,可以给我一些关于如何确保 Celery 可以与代理连接的指导。

0 投票
2 回答
869 浏览

appharbor - 使用 AppHarbor 和 CloudAMQP 在云中进行 MT

有人成功让 MassTransit 与 AppHarbor 和 CloudAMQP 合作吗?

我对它感到很厌烦。

我让发布者(网站)发送消息,但服务器(后台工作人员)似乎没有接收它们。

我担心的一件事是 MT 需要 rabbitmq 方案,而 CloudAMQP 将方案设置为 amqp。

我在配置总线时正在交换方案(从 amqp 到 rabbitmq),并注意到消息地址中的方案是 rabbitmq,这是有道理的,因为我替换了它们。但我想知道他们是否必须是 amqp 才能让服务器接他们?

这是我发送的一条简单消息,它到达了 RabbitMQ,但服务器没有接收到它。

谢谢,乔

编辑:感谢卡尔指出网址中的密码

0 投票
1 回答
650 浏览

c# - AppHarbor MassTransit CloudAMQP 抛出异常 指定的端点均不可访问

我正在尝试从我的 AppHarbor 应用程序中将 Masstransit 与 CloudAMQP LEMUR 一起使用,但我收到了异常:

“指定的端点均不可到达”

这是 Masstransit 的配置方式:

我使用的版本是:MassTransit 2.6.3
MassTransit.RabbitMQ.2.6.3
RabbitMQ.Client.2.8.7
Magnum.2.0.1.0

我该如何解决这个错误?

谢谢

0 投票
1 回答
155 浏览

c# - AppHarbor MassTransit CloudAMQP 持续消耗 1,9kB/s

使其工作后:
AppHarbor MassTransit CloudAMQP 抛出异常 指定的端点均不可访问 现在我在 CloudAMQP 管理中看到我有 2 个连接不断消耗 1,9kB/s 和 1,4kB/s,这将很快耗尽我的 30 Mb

有没有办法解决这个问题?

0 投票
1 回答
171 浏览

push - 是否可以从 Android 设备订阅 CloudAMQP rabbitmq 服务?

是否可以通过 CloudAMQP 从 Appfog 等其他云解决方案将消息发布到 rabbitmq 服务并从互联网(而不是在云内部)使用它们?

0 投票
1 回答
3335 浏览

node.js - 在 node-amqp (node.js) 中处理独占队列订阅时出错

当您订阅一个独占队列(一次只允许一个消费者)时,当队列被超额订阅(已经有一个消费者)时,node-amqp 会引发异常。

  • 我试过使用 .on("error",cb) 语法。
  • 我尝试过错误域(节点 0.10.0)
  • Try/catch 显然没有用

这是我的订阅线,但没什么特别的:

使用队列时会抛出未处理的异常:

查看 node-amqp 内部,我看到它们在模块内实现了一个独立的任务队列,以便在发生错误时,该任务在独立的上下文中运行。

是否有任何解决方法/修复?...或者我只是做错了什么?

0 投票
0 回答
677 浏览

rabbitmq - 通过 dotcloud 使用 CloudAMQP 时,如何最大限度地减少与 django-celery 的连接?

在花了几周时间让 django-celery-rabbitmq 在 dotcloud 上工作后,我发现 dotcloud 不再支持 rabbitmq。相反,他们推荐 CloudAMQP。所以我按照教程设置了 CloudAMQP:

而且服务很好。但是,即使我没有运行任何进程,CloudAMQP 也会说有 3 个连接。

我查看了他们的文档,他们说(http://www.cloudamqp.com/docs-python.html)对于芹菜最好设置

我现在已经这样做了,但连接仍然是 3。知道我该怎么做

  • 不使用应用程序时将连接数减少到0?

  • 尽量减少连接数以确保我保持在配额范围内?

0 投票
0 回答
1882 浏览

heroku - 当 Broker Pool Limit > None 时 Heroku Celery 超过 6 的连接限制

我在 Heroku 上使用 Django/Celery 和 CloudAMQP 插件。

在我的设置文件中,如果我设置BROKER_POOL_LIMIT为 以外的任何值None,我很快就会超过我的 CloudAMQP 连接限制 6。

我想知道为什么我会有比我指定的更多的连接,BROKER_POOL_LIMIT以及如何设置BROKER_POOL_LIMIT一个大于None而不最终超过连接限制的值。如果有用,这是我的个人资料中指定的工作进程类型

worker python manage.py celery worker -B --loglevel=info