标签: rabbitmq

RabbitMQ:即使队列是非独占的,ACCESS_REFUSED

我正在尝试通过 C++ 中的 RabbitMQ 在两台计算机之间发送和接收消息。我的发件人代码如下所示:

AmqpClient::Channel::ptr_t channel = AmqpClient::Channel::Create("192.168.1.1", 5672, "test", "test", "/");
channel->DeclareQueue("rabbit", false, true, false, false);
AmqpClient::BasicMessage::ptr_t msg = AmqpClient::BasicMessage::Create("Hello Rabbit!");
channel->BasicPublish("", "rabbit", msg);
std::cout << "[x] message sent!" << std::endl;
Run Code Online (Sandbox Code Playgroud)

我在另一台具有192.168.1.1IP 地址的计算机上的接收器代码如下所示:

AmqpClient::Channel::ptr_t connection = AmqpClient::Channel::Create("localhost", 5672, "test", "test", "/");
connection->DeclareQueue("rabbit", false, true, false, false);

std::string consumer = connection->BasicConsume("rabbit", "", true, false);
while(true)
{
    AmqpClient::Envelope::ptr_t envelope = connection->BasicConsumeMessage(consumer);
    std::cout << "received message: " << envelope->Message()->Body() << std::endl;
    std::cout << "[x] ready to receive new message..." …
Run Code Online (Sandbox Code Playgroud)

rabbitmq

2
推荐指数
1
解决办法
3241
查看次数

2
推荐指数
1
解决办法
2366
查看次数

有没有办法让 Pika BlockingConnection 一次消费一条消息?

import pika

params = pika.URLParameters([URL])
connection = pika.BlockingConnection(params)
channel = connection.channel()
channel.queue_declare(queue='test', durable=True)
channel.basic_consume(do_things, queue='test')

try:
    channel.start_consuming()
except KeyboardInterrupt:
    channel.stop_consuming()
except:
    rollbar.report_exc_info()
finally:
    channel.close()
    connection.close()
Run Code Online (Sandbox Code Playgroud)

这是我用来消费消息的代码。问题是,假设队列中有 100 条消息test。一旦我启动消费者,它就会获取所有100条消息并一一处理,即队列状态变为:消息就绪:0,未确认:100,总计:100。结果,我无法旋转启动新消费者并行处理这 100 条消息,因为没有为新消费者留下任何消息(所有消息均已被现有消费者获取,尽管大多数消息尚未处理)。有没有办法让消费者一次只接受1条消息?

rabbitmq pika

2
推荐指数
1
解决办法
3100
查看次数

缺少rabbitMQ配置文件

我正在使用 Rabbitmq 3.7.2 和 Erlang 20.2 ,并且以下路径 C:\Users\vxadmin\AppData\Roaming\RabbitMQ\config 中默认缺少 RMQ 配置文件

基于我采取的步骤之后的参考 -

1 创建环境变量

RABBITMQ_CONFIG_FILE C:\Users\vxadmin\AppData\Roaming\RabbitMQ\config

2 以管理员身份打开命令提示符

并运行rabbitmq-service.bat删除,但它抛出错误“C:\ Users \ vxadmin \ AppData \ Roaming \ RabbitMQ \ config”'不被识别为内部或外部命令,可操作程序或批处理文件。

请指导我还需要设置什么才能获取 RMQ 的配置文件。

rabbitmq

2
推荐指数
1
解决办法
5477
查看次数

在同一主题上创建多个订阅者以实现负载共享(pub/sub)

我花了几乎一天的时间在 google pub sub 文档上创建一个小应用程序。我正在考虑从rabbitMQ切换到google pub/sub。这是我的问题:

我有一个将消息推送到主题 (T) 的应用程序。我想通过订阅者进行负载共享。所以我为 T 创建了 3 个订阅者。我将所有 3 个订阅者的名称保持相同 (S),这样我就不会 3 次收到相同的消息。

我有 2 个问题:

  1. 我在控制台上没有看到 3 个相同的 T 订阅者。它显示 1
  2. 如果我尝试同时启动所有 3 个订阅者实例。我收到“发生服务错误。”。如果我按顺序开始,错误就会消失。

最后,谷歌认真对待 pub/sub 吗?查看文档和公众参与,我不确定是否应该切换到 google pub/sub。

谢谢,

publish-subscribe rabbitmq google-cloud-pubsub

2
推荐指数
1
解决办法
2315
查看次数

RabbitMQ 加载页面时出现问题(连接重置错误标头 GET/FAV)

rabbitmq 已连接到我的端口,到目前为止一切看起来都很好,但是当我尝试在浏览器中连接到我的本地主机时,我收到此错误消息:

\n\n
The connection was reset\n\nThe connection to the server was reset while the page was loading.\n\n    The site could be temporarily unavailable or too busy. Try again in a few moments.\n    If you are unable to load any pages, check your computer\xe2\x80\x99s network connection.\n    If your computer or network is protected by a firewall or proxy, make sure that Firefox is permitted to access the Web\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以我做的第一件事就是查看我的rabbitmq日志,我看到了这个:

\n\n
 Starting RabbitMQ 3.7.9 on Erlang 20.2.2\n Copyright (C) 2007-2018 …
Run Code Online (Sandbox Code Playgroud)

linux rabbitmq server

2
推荐指数
1
解决办法
6548
查看次数

无法使用 SetEnvironmentVariable 设置 PATH

我正在尝试在我的 powershell 脚本中设置环境变量。

这是我的代码片段。它设置系统环境变量(系统属性>环境变量>路径)但是,我无法在powershell中启动rabbitmq-service。

'$ENV:PATH' 命令输出没有新添加的路径。系统重新启动后 $ENV:PATH 包含新路径,但命令“rabbitmq-service”仍然不起作用。

  # SET Erlang and RabbitMQ  Home Path
    $ERLANG_HOME = "$env:PROGRAMFILES\erl9.2"
    [System.Environment]::SetEnvironmentVariable("ERLANG_HOME", $ERLANG_HOME, "Machine")

    $ERTS_HOME = "$env:PROGRAMFILES\erts-9.2"
    [System.Environment]::SetEnvironmentVariable("ERTS_HOME", $ERTS_HOME, "Machine")

    $RABBITMQ_HOME = "$env:PROGRAMFILES\RabbitMQ Server\rabbitmq_server-3.6.11" 
    [System.Environment]::SetEnvironmentVariable("RABBITMQ_HOME", $RABBITMQ_HOME, "Machine")


    # Add Erlang and RabbitMQ to Path     
    $System_Path_Elems = [System.Environment]::GetEnvironmentVariable("PATH", "Machine").Split(";")
    if (!$System_Path_Elems.Contains("$RABBITMQ_HOME\sbin") -and !$System_Path_Elems.Contains("$ERLANG_HOME\bin") -and !$System_Path_Elems.Contains("$ERTS_HOME\bin"))
    {       
    $newPath = [System.String]::Join(";", $System_Path_Elems + "$ERLANG_HOME\bin" + "$ERTS_HOME\bin" + "$RABBITMQ_HOME\sbin")
    [System.Environment]::SetEnvironmentVariable("PATH", $newPath, "Machine")   
    }
Run Code Online (Sandbox Code Playgroud)

如果我在我的脚本中使用 $env:PATH 设置 PATH,它会起作用。

$env:Path += ";C:\\Program Files\\erl9.2\\erts-9.2\\bin;
C:\\Program Files\\RabbitMQ Server\\rabbitmq_server-3.6.11\\sbin;C:\\Program Files\\erl9.2\\bin"  
Run Code Online (Sandbox Code Playgroud)

我能够毫无问题地执行以下命令。

rabbitmq-service …
Run Code Online (Sandbox Code Playgroud)

powershell erlang rabbitmq

2
推荐指数
1
解决办法
1161
查看次数

如何在Flask微框架中创建单例对象

我正在创建一个类,用于Producer将消息推送到RabbitMQ. 它利用pika module. 我想创建一个处理程序,以便我可以控制与 Rabbit MQ 交互的连接数量。

有没有一种方法可以将其添加到其中app_context并稍后引用它,或者有没有一种方法可以用来init_app定义此处理程序。

任何代码片段都会有很大的帮助。

python rabbitmq flask

2
推荐指数
1
解决办法
7166
查看次数

有没有办法在 RabbitMQ 中显式地将队列绑定到默认交换?

我犯了一个错误:现在两个队列都明确绑定到某个交换,我可以为每个队列进行编辑。这些队列之一必须绑定到默认交换。现在,当我尝试将该队列的交换更改为空字符串时,它会引发异常:

Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=403, reply-text=ACCESS_REFUSED - operation not permitted on the default exchange, class-id=<..>, method-id=<..>)

我可以将一些特定值传递给方法 com.rabbitmq.client.Channel#queueBind 将队列绑定到 defaultChange 吗?我使用Java RabbitMQ客户端库5.6.0

java messaging rabbitmq rabbitmq-exchange

2
推荐指数
1
解决办法
7222
查看次数

将 VueJS 连接到 RabbitMQ

我正在使用 VueJS 构建一个 Web 应用程序。应用程序应充当消息生产者并将消息发送到 RabbitMQ。是否有关于如何实现组件的最佳实践?

编辑:我相信这个问题还没有解决,RabbitMQ 允许使用 AMQP 以外的协议进行 Websocket 连接,即使用 RabbitMQ 团队编写的插件支持 MQTT 和 STOMP。
这些插件支持 websocket 传输协议并支持使用这些消息传递协议进行操作。
来源: https: //www.rabbitmq.com/web-mqtt.html

javascript rabbitmq messagebroker vue.js

2
推荐指数
1
解决办法
4437
查看次数