Tag: amqp

使用–net = host时,如何将芹菜容器连接到rabbitmq容器?

使用–net = host时,我无法将芹菜容器连接到rabbitmq容器。 我开始我的rabbitmq: docker run -d –rm –net=host –hostname=rabbitmq –name=rabbitmq -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=donald -e RABBITMQ_DEFAULT_PASS=duck rabbitmq-mgnt 我的rabbitmq服务器是在DNS中定义的: nslookup amqp Server: 127.0.0.1 Address: 127.0.0.1#53 Name: amqp.service.consul Address: 10.68.32.180 我可以连接和validation凭据: curl -i -u donald:duck http://amqp:15672/api/whoami HTTP/1.1 200 OK vary: Accept-Encoding, origin Server: MochiWeb/1.1 WebMachine/1.10.0 (never breaks eye contact) Date: Mon, 27 Feb 2017 […]

如何从rabbitmq docker的spring-boot中创buildrabbitmq队列

我已经失去了一整天的时间来试图获得spring-amqp示例项目,并运行在dockm版本的rabbitmq上。 我只是运行标准的rabbitmq docker。 虽然我没有任何连接问题,但是我总是会得到有关创build队列的exception,而且我尝试了所有可能的变体。 我试图只是在我的configuration中像示例项目一样声明队列。 我已经尝试明确configuration一个RabbitAdmin。 我已经尝试明确configuration整个自动configuration混乱。 我已经在rabbitmq中创build了一个新用户,并且明确赋予了权限。 我试过只使用队列名称,而没有实际声明队列bean。 我已经尝试将队列和RabbitAdmin注入其他bean,以强制它们被创build。 不pipe我尝试什么,我得到以下错误: 2017-04-24 17:42:19.709 WARN 37360 — [cTaskExecutor-1] osarlistener.BlockingQueueConsumer : Failed to declare queue:"incoming" 2017-04-24 17:42:19.715 WARN 37360 — [cTaskExecutor-1] osarlistener.BlockingQueueConsumer : Queue declaration failed; retries left=3 org.springframework.amqp.rabbit.listener.BlockingQueueConsumer$DeclarationException: Failed to declare queue(s):["incoming"] at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:621) ~[spring-rabbit-1.7.1.RELEASE.jar:na] at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:520) ~[spring-rabbit-1.7.1.RELEASE.jar:na] at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1382) [spring-rabbit-1.7.1.RELEASE.jar:na] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121] Caused by: […]

与RabbitMQ断开连接后,Apache进程不会死亡

我试图在我的项目中使用服务器端事件机制。 (这就像长期投票类固醇) 从“ 从服务器发送事件 ”字幕的例子工作得很好。 几秒钟后,断开连接,apache进程被终止。 这种方法工作正常。 但! 如果我尝试使用RabbitMQ ,则在浏览器从服务器( es.close() )断开连接后,Apache不会导致进程中断。 并且进程保持原样并在docker容器重新启动后才被杀死。 connection_aborted和connection_status根本不起作用。 connection_aborted仅返回0 ,connection_status即使在断开CONNECTION_NORMAL后也返回CONNECTION_NORMAL 。 只有当我使用RabbitMQ时才会发生。 没有RMQ这个function运作良好。 ignore_user_abort(false)也不起作用。 代码示例: <?php use PhpAmqpLib\Channel\AMQPChannel; use PhpAmqpLib\Connection\AbstractConnection; use PhpAmqpLib\Exception\AMQPTimeoutException; use PhpAmqpLib\Message\AMQPMessage; class RequestsRabbit { protected $rabbit; /** @var AMQPChannel */ protected $channel; public $exchange = 'requests.events'; public function __construct(AbstractConnection $rabbit) { $this->rabbit = $rabbit; } public […]

docker中的RabbitMQ不会正常结束,无法重新连接

我正在尝试在2个docker容器中使用RabbitMQ进行RPC。 我已经把它们设置如下: chindow: image: bablot/chindow ports: – "9999:9999" links: – rabbitmq:amq rabbitmq: image: rabbitmq:3 ports: – "15672:15672" 一切工作如预期最初,但后来,当我closures系统与ctrl+c它会导致以下错误: babelotserver_rabbitmq_1 exited with code 143 然后当我继续重新启动系统时: chindow_1 | { [Error: connect ECONNREFUSED 172.17.0.3:5672] code: 'ECONNREFUSED', errno: 'ECONNREFUSED', syscall: 'connect', address: '172.17.0.3', port: 5672 } 编辑: 当我docker stop rabbitmq我得到code 143当我docker stop node.js我得到code 0 为什么这两个不同? 这有意义吗?

如何启用RabbitMQ Docker容器的集群

尝试使用官方RabbitMQ Docker镜像启用群集时遇到问题 – https://hub.docker.com/_/rabbitmq/ 。 我正在使用docker-compose来启动我的基础架构,并且我无法获得“slave”节点来join群集。 当我在rabbitmqctl cluster_status上运行rabbitmqctl cluster_status时,从站没有列出。 以下是rabbitmqctl cluster_status的输出: $ docker-compose exec master-rabbitmq bash root@master-rabbitmq:/# rabbitmqctl cluster_status Cluster status of node 'rabbit@master-rabbitmq' … [{nodes,[{disc,['rabbit@master-rabbitmq']}]}, {running_nodes,['rabbit@master-rabbitmq']}, {cluster_name,<<"rabbit@master-rabbitmq">>}, {partitions,[]}, {alarms,[{'rabbit@master-rabbitmq',[]}]}] 下面列出了我docker-compose.yml ,以供参考。 version: "2" services: master-rabbitmq: image: rabbitmq:3-management hostname: master-rabbitmq environment: – RABBITMQ_ERLANG_COOKIE=super secret token ports: – "4369:4369" – "5671:5671" – "5672:5672" – "15671:15671" – […]

socket.error:超时(在Docker容器中运行的Celery&RabbitMQ)

试图提出芹菜 (与RabbitMQ )官方docker集装箱。 docker run -d –hostname my-rabbit –name some-rabbit rabbitmq docker run –link some-rabbit:rabbit –name some-celery -d celery 我已经检查了日志,以确保一切正常。 # docker logs some-celery [2016-10-20 11:05:50,357: WARNING/MainProcess] /usr/local/lib/python3.5/site-packages/celery/apps/worker.py:161: CDeprecationWarning: Starting from version 3.2 Celery will refuse to accept pickle by default. The pickle serializer is a security concern as it may give attackers the ability […]

作为docker集装箱运行的Celery&RabbitMQ:收到types为'…'的未注册任务

我对docker,芹菜和rabbitMQ比较陌生。 在我们的项目中,我们目前有以下设置:1个物理主机,运行多个docker容器: 1x rabbitmq:3pipe理容器 # pull image from docker hub and install docker pull rabbitmq:3-management # run docker image docker run -d -e RABBITMQ_NODENAME=my-rabbit –name some-rabbit -p 8080:15672 -p 5672:5672 rabbitmq:3-management 1个芹菜容器 # pull docker image from docker hub docker pull celery # run celery container docker run –link some-rabbit:rabbit –name some-celery -d celery (有更多的容器,但他们不应该对问题做任何事情) […]

我应该如何构造docker化的RabbitMQ?

我正尝试将我们的整体PHP Symfony应用程序迁移到一个更具可扩展性的Docker解决scheme。 应用程序和RabbitMQ之间有一些通信,我使用docker-compose将所有的容器,在这种情况下,应用程序和RabbitMQ服务器。 围绕这个话题进行了很多讨论,一个容器应该只产生一个stream程, Docker的最佳实践在这一点上有些模糊: 虽然这个口头禅的意图很好,但是每个容器只能有一个操作系统进程并不一定是真的。 除了容器现在可以用init进程产生的事实以外,一些程序可能会自己产生额外的进程。 为每个RabbitMQ使用者创build一个单独的Docker容器是否有意义? 这种感觉是“正确的”和“干净的”,不让rabbitmq服务器知道用于处理队列的语言/工具。 我想出了( docker-compose.yml相关部分): app : # my php-fpm app container rabbitmq_server: container_name: sf.rabbitmq_server build: .docker/rabbitmq ports: – "15672:15672" – "5672:5672" networks: – app_network rabbitmq_consumer: container_name: sf.rabbit_consumer extends: app depends_on: – rabbitmq_server working_dir: /app command: "php bin/console rabbitmq:consumer test" networks: – app_network 我可以在rabbitmq_consumer容器中使用nohup或其他方式在后台运行它们来运行多个消费者。 我想我的问题是: 我可以以某种方式自动执行“添加新消费者”,这样每次从代码中添加新消费者时,我都不需要编辑Docker(和其他人的“构build脚本”(和其他人一样))。 将RabbitMQ服务器与消费者分开是否有意义,还是应该将Rabbit服务器与在后台运行的消费者一起使用? 还是应该将它们放在应用程序容器的背景中?