问题标签 [py-amqplib]

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 投票
0 回答
1087 浏览

python - 无法在 Rabbitmq 中设置最大队列长度

我正在尝试使用 Python amqplib 库设置 Rabbitmq 队列的最大长度。但队列不受限制。

http://www.rabbitmq.com/maxlength.html

我每次都重置 Rabbitmq 服务器以删除队列。

我究竟做错了什么?

谢谢

0 投票
1 回答
1631 浏览

javascript - Node.js+node_amqp.js 无法连接到 ActiveMQ 61616 或 5672 端口

需要一些建议。

这是一个示例,我从 node.js 开始:

ActiveMQ 写入记录:

我认为,这个错误是因为 61616 端口的协议是 tcp,而不是 amqp。但是当我尝试在控制台输出中将端口更改为 5672 时,我看到:

netstat -antp 返回:

如您所见,ActiveMQ 监听 5672.. 但是,不要连接。为什么???我尝试了其他 node.js 模块,例如 node-amqp.js,但没有任何改变。可能是我错过了 connection_tunnig 中的某些内容吗?(frameSize 等)请,真的需要建议。谢谢你。

0 投票
1 回答
3605 浏览

python - 多个工作人员从 RabbitMQ 队列消费相同的消息

我使用 py-amqp 模块和 Python 3.4 当我运行超过 1 个侦听器并启动一个生产者发布消息时,侦听器接收一条消息并开始同时处理它。我不需要这种行为,因为消息应该只写入 DB 一次。所以最快的工作人员向数据库写入消息,所有其他工作人员都说该消息已经存在。

生产商:

工人:

还:

0 投票
0 回答
144 浏览

python - 仅在 Google App Engine 上的 py-amqplib 连接关闭失败

我正在尝试在 Google App Engine 上使用 py-amqplib 与 rabbitmq 集群(也托管在 App Engine 上)进行通信。我的一切都按预期工作,除了当我关闭连接时抛出异常:

我认为这与接管所有出站套接字通信的应用程序引擎的 remote_socket 实现有关。

我已经验证,当我在本地运行代码并通过应用程序引擎开发服务器时,连接会正确关闭(即当它不使用远程套接字时)。

所以我正在寻找两件事之一:

1) 关闭 amqp 连接而不引发套接字错误的替代方法,或确认尽管出现错误,但套接字已关闭且未保持打开状态。

2) 与应用程序引擎一起使用的备用 amqp python 模块。我试过'amqp',它是'amqplib'的分支,但它需要ctypes并且无法加载到应用程序引擎上。我试过 pika,由于 fnctrl 模块,它在应用引擎上也失败了。Carrot 和 Kombu 都有可交换的后端,但它们似乎要么依赖于 c-libraries,要么使用 amqplib 作为后端。

0 投票
1 回答
930 浏览

celery - 带有 Python 3 的 Librabbitmq 2.0.0 给出了 TypeError: can't pickle memoryview objects

我正在使用 git repo https://github.com/celery/librabbitmq的最新主分支,并按照自述文件中的说明安装librabbitmq==2.0.0Python 3.6

使用开发版本

您可以通过执行以下操作克隆存储库:

然后通过执行以下操作安装它:

这工作正常(在操作系统中安装某些二进制文件以进行 c 编译之后),但是当我随后制作一个小的a+b添加任务并使用它调用它add.delay(2,2)时失败并出现以下错误。抬头一看,Celery 4 使用 json 作为序列化器,所以显然不是因为如果 pickle 序列化

  1. 从 librabbitmq 更改为 pyamqp 代理工作正常
  2. MacOS 和 Ubuntu 16 中的完全相同的情况

[2018-04-30 23:40:02,956: CRITICAL/MainProcess] 不可恢复的错误:SystemError('返回了带有错误集的结果',)回溯(最近一次调用):文件“/Users/somghosh/.virtualenvs/ ctdb/lib/python3.6/site-packages/kombu/messaging.py",第 624 行,在 _receive_callback 中返回 on_m(message) if on_m else self.receive(decoded, message) File "/Users/somghosh/.virtualenvs/ ctdb/lib/python3.6/site-packages/celery/worker/consumer/consumer.py”,第 570 行,在 on_task_received 回调中,文件“/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site- packages/celery/worker/strategy.py”,第 145 行,task_message_handler 句柄(req)文件“/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/worker/worker.py” ,第 221 行,在 _process_task_sem 返回 self._quick_acquire(self._process_task, req) 文件“/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/kombu/async/semaphore.py”,第 62 行,在获取回调中(*partial_args, **partial_kwargs) 文件“/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/worker/worker.py”,第 226 行,在 _process_task req.execute_using_pool(self.池)文件“/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/worker/request.py”,第 531 行,在 execute_using_pool correlation_id=task_id,文件“/Users/somghosh/. virtualenvs/ctdb/lib/python3.6/site-packages/celery/concurrency/base.py”,第 155 行,在 apply_async **options) 文件“/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/billiard/pool.py”,第 1486 行,在 apply_async self._quick_put((TASK, (result._job, None, func, args, kwds))) 文件“/Users/somghosh/.virtualenvs/ ctdb/lib/python3.6/site-packages/celery/concurrency/asynpool.py",第 813 行,在 send_job body = dumps(tup, protocol=protocol) TypeError: can't pickle memoryview objects

上述异常是以下异常的直接原因:

Traceback(最近一次调用最后):文件“/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/worker/worker.py”,第 203 行,在 start self.blueprint.start( self) 文件“/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/bootsteps.py”,第 119 行,在 start step.start(parent) 文件“/Users/somghosh/. virtualenvs/ctdb/lib/python3.6/site-packages/celery/bootsteps.py”,第 370 行,在开始返回 self.obj.start() 文件“/Users/somghosh/.virtualenvs/ctdb/lib/python3. 6/site-packages/celery/worker/consumer/consumer.py”,第 320 行,在 start blueprint.start(self) 文件“/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/ celery/bootsteps.py",第 119 行,在 start step.start(parent) 文件中"/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/worker/consumer/consumer.py”,第 596 行,在 start c.loop(*c.loop_args()) 文件中“/ Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/celery/worker/loops.py”,第 88 行,在 asynloop next(loop) 文件中“/Users/somghosh/.virtualenvs/ctdb/lib /python3.6/site-packages/kombu/async/hub.py”,第 354 行,在 create_loop cb(*cbargs) 文件“/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/ kombu/transport/base.py”,第 236 行,on_readable 阅读器(循环)文件“/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/kombu/transport/base.py”,行218、在_read drain_events(timeout=0)文件“/Users/somghosh/.virtualenvs/ctdb/lib/python3.6/site-packages/librabbitmq-2.0.0-py3.6-macosx-10.6-intel.egg/librabbitmq/init .py",第 227 行,在 drain_events self._basic_recv(timeout) SystemError:返回带有错误集的结果