Articles of rabbitmq

套接字,HTTP查询或长轮询5000连接客户端?

我有大约5000个用Delphi编写的Windows客户端,它们驻留在办公室局域网中,需要访问更新为“云”的新数据,基本上是2GB Windows 2003 VPS机器上托pipe的PHP(IIS)+复制MySQL网站。可以升级到2GB)。 最终用户可以通过Internet访问,这些用户更新的数据需要由位于办公室防火墙后面的Windows客户端使用。 注意:如果您问为什么防火墙后面的客户端 – 它们包含重要的公司信息。 由于客户端位于防火墙之后,客户端必须直接连接到VPS以下载数据更新。 有几种不同的连接方法,我可以想到: 1)。 套接字 :在Windows VPS上运行套接字服务器,并使每个5000个客户端不断地连接到套接字服务器。 优点 :没有第三方代码。 缺点 :低级别。 未知的可扩展性和稳定性,可以同时连接大量的客户端。 除非使用不稳定的Lazarus,否则暂时停留在Windows平台上。 2)。 RabbitMQ :在VPS上运行RabbitMQ(或同等产品),然后让5000个客户端中的每一个通过AMQP连接到RabbitMQ服务器。 在Windows VPS上,创build一个连接到RabbitMQ的Delphi应用程序,将由PHP插入的数据发送到MySQL。 优点 :发送数据,忘记 – 不需要使用MySQLpipe理队列。 缺点 :pipe理RabbitMQ的复杂性和可能的​​错误(特别是复制),而只使用简单的队列。 队列可能会使用大量的内存。 3)。 HTTP查询 :编程5000个客户端每隔5秒左右向VPS发送一个HTTP GET。 如果有更新,HTTP服务器将返回数据,如果没有更新,则发送“无数据”响应。 首先,IIS绝对不存在 – 即使5个用户正在下载文件,我现有的IIS也会挂起 – 几分钟后,IIS自行重置,不确定是IIS还是VPS。 我可能会使用Apache(或Nginx)+ PHP或创build一个自定义的Delphi HTTP服务器,如果这可以提高性能。 如果我使用PHP,我会为未读取数据的客户端创build一个标志文件(或使用Memcached?) – 这是为了防止在队列表上过多的MySQL查询。 对于自定义的Delphi HTTP服务器,我可以查询MySQL以每1秒将所有更改(对于所有客户端)加载到内存中。 优点 :简单易用,并且可以和Apache / PHP一起工作,所以我甚至可以在将来转换到Linux。 使用SSL轻松实现安全。 […]

我如何使用Nginx作为我的RabbitMQ的websocket函数的反向代理?

我已经启用了RabbitMQ的Web-Stomp插件,因为我们需要通过WebSockets的STOMP,它的工作原理。 现在我需要的是一个Nginx服务器作为我的RabbtMQ服务器前面的反向代理。 下面是Nginx服务器的configuration部分。 http { upstrem websocket { # this is the actual rabbitmq server address server 15.15.181.73:15674 } server { # the nginx server addres is 15.15.182.108 listen 80 default_server; listen [::]:80 default_server ipv6only=on; location /ws/ { proxy_pass http://websocket; proxy_http_version 1.1; proxy_set_header Upgrade websocket; proxy_set_header Connection upgrade; } } } 这里是访问服务器的JavaScript代码 var WebSocket = […]

RabbitMQpipe理Nginx代理

我有rabbitmq代理loadbalancer和vm。 在rabbitmq打开5672端口与插件pipe理,如果我创build代理rabbitmq recive curl:(52)来自服务器的空回复 我可以连接到远程login到rmq服务器,并有callback curl:(56)Recv失败:连接被同级重置 Nginxconfiguration server { listen xxx.xxx.xxx.yy:80; server_name xxxxxxxxxx access_log acces.log; error_log error.log; location / { client_body_buffer_size 128k; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 16 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_connect_timeout 30s; proxy_pass http://xxx.xxx.xxx.xx:5672; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

Ubuntu无法启动RabbitMQ代理

我很难试图安装RabbitMQ。 我试过通过webmin的debian,做了一个sudo apt-get,尝试sudo wget url然后sudo dpkg -i。 所有尝试都失败,无法启动RabbitMQ代理。

如何使RabbitMQ更可靠? 是否有可能定期备份其数据(消息)?

我想确保在RabbitMQ不会丢失,如果它崩溃。 有可能以某种方式让RabbitMQ转储或备份磁盘上的所有队列? 我也听说,一旦它收到消息,即使它崩溃,当它的消息将可用。 那么您推荐如何使该过程更可靠?

supervisord不包括 files = / abs / path / to / files / * conf

我有一个新的安装supervisord在一个开发stream浪机内。 我有rabbitmq设置和从我的Symfony2生产者接收消息。 我正在尝试使用supervisord来维护Symfony2控制台命令的X消费者。 下面的configuration就像一个梦一样。 我的消费者被创造和保持良好。 # /etc/supervisord.conf # … [supervisord] logfile=/var/log/supervisor/supervisord.log user=root [program:rabbitmq-consume-email] command=/usr/bin/php /another/path/app/console rabbitmq:consumer -w email numprocs=2 process_name=%(program_name)s-%(process_num)s 但是,将其改为如下,似乎并没有创造任何生产者,包括检查我消耗的队列中的当前消费者。 # /etc/supervisord.conf # … [supervisord] logfile=/var/log/supervisor/supervisord.log user=root [include] files = /abs/path/to/more/confs/*.conf 用… # /abs/path/to/more/confs/rabbitmq-email.conf # … [program:rabbitmq-consume-email] command=/usr/bin/php /another/path/app/console rabbitmq:consumer -w email numprocs=2 process_name=%(program_name)s-%(process_num)s 正如你从下面看到的,configuration文件都共享相同的权限。 但即使使包含的configuration文件777(纯粹出于挫折),我没有任何进展。 vagrant@box  ~  ls -l /etc/supervisord.conf -rw-r–r– […]

如何在单个服务器上正确configuration多个RabbitMQ实例

我正在尝试做一些集群testing,我正在一台Windows机器上设置多个RabbitMQ服务。 我可以设置环境variablesRABBITMQ_NODENAME,RABBITMQ_SERVICENAME和RABBITMQ_NODE_PORT,然后运行RabbitMQ-Service Install,以不同的名字安装一个新的RabbitMQ服务。 我的问题是关于configuration文件。 根据我在RabbitMQ网站上阅读的内容,configuration文件默认为%AppData%\ RabbitMQ目录。 我只是无法理解如何设置,所以我可以使用自己的configuration运行服务的3个实例。 我是否在不同的本地或域帐户下运行安装,以便将其置于不同的%AppData%\ RabbitMQ目录下,或者可以向该服务添加指令,以查找特定服务的configuration文件的特定目录? 另外,RABBITMQ_BASE如何发挥作用? 只有数据和日志文件,或者这也适用于configuration文件? 我不确定是否有一次我将BASE的服务设置定义为特定path,我可以在该path的根目录下放置一个新的rabbitmq.config。 请确认并提供任何额外的帮助。 先谢谢你! 现在我正在Windows上进行testing,但我打算转换到Linux,一旦我有这一切正常工作和理解。 不幸的是,我已经inheritance了当前的环境,并且已经安装并使用Windows服务器运行。 他们只是想让我为它设置集群,所以我试图模拟我的工作站上的集群。

运行RabbitMQ的CentOS无法创build跟踪文件并远程login其他虚拟主机

我们在CentOS服务器上安装并运行了RabbitMQ。 尽pipe可以使用来自其他计算机上的pipe理控制台的远程guest虚拟机使用的Firehose跟踪程序创build跟踪文件,但是在未经许可的其他虚拟主机中远程创build相同的日志文件失败的访客用户。 例如,在下图中,我们简单地在testing虚拟主机上创buildtestLogTracer,但是无法在testing2虚拟主机上创build相同的日志文件testLogTracer2。 这两个虚拟主机之间的唯一区别是guest虚拟机用户具有testing虚拟主机的权限。 更新: 在创build跟踪文件时添加到文件rabbit@server79.log中的最新服务器错误如下所示: =ERROR REPORT==== 26-Jan-2016::13:13:19 === webmachine error: path="/api/traces/hafizTest/newTraceFile" "Bad Request" 另外用户“moha”具有像vhost“test”和“test2”这样的用户“guest”的完全权限。 两个虚拟主机的权限如下图所示。

如何设置Elixir项目通过amqp使用RabbitMQ?

我想通过amqp从我的elixir凤凰应用程序中使用rabbitMQ。 我遵循官方网站上的教程,但仍然在mix.deps compile期间,我得到一个错误: include/amqp_gen_consumer_spec.hrl:30: syntax error before: '/' include/amqp_gen_consumer_spec.hrl:31: syntax error before: '/' include/amqp_gen_consumer_spec.hrl:32: syntax error before: '/' include/amqp_gen_consumer_spec.hrl:34: syntax error before: '/' include/amqp_gen_consumer_spec.hrl:35: syntax error before: '/' include/amqp_gen_consumer_spec.hrl:36: syntax error before: '/' include/amqp_gen_consumer_spec.hrl:37: syntax error before: '/' include/amqp_gen_consumer_spec.hrl:38: syntax error before: '/' include/amqp_gen_consumer_spec.hrl:39: syntax error before: '/' include/amqp_gen_consumer_spec.hrl:42: syntax error before: '/' include/amqp_gen_consumer_spec.hrl:30: syntax […]

在linux上安装rabbitmqadmin

我正在尝试安装并能够在Linux机器上运行rabbitmqadmin。 遵循这里描述的指示不起作用。 下载链接文件后,它会提示将文件(它看起来像一个Python脚本)复制到/usr/local/bin 。 尝试运行它通过简单地调用rabbitmqadmin结果在rabbitmqadmin: command not found 。 似乎没有任何关于如何使这个工作的信息,并假设网站上列出的所有步骤应该为所有人工作。 看起来很奇怪,只需将python脚本复制到bin文件夹就可以让它成为一个公认的命令,而不必每次都调用python解释器。 任何帮助表示赞赏。