rabbitmq-C的三个问题:1.windows下可以接收到以前未被接收的消息,而linux下只可以接收到即时消息
2.windows下可以接收到不同exchange的相同queue名称的消息,而linux下只能接收到指定exchange下指定queue名称的消息
3.linux下已经接收的消息在server管理中并未消除,打开windows接收端依旧可以收到被linux下的接收端收到过的消息
希望了解rabbitmq-c的大神帮忙解决
rabbitmq-c消息接收表现不一样
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 你知我知皆知 2024-08-03 20:28关注
以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
这个问题可能是因为你的Windows和Linux版本的RabbitMQ配置文件(rabbitmq.conf)有所不同。以下是针对这些问题的一些解决方案:
- 在Windows上,你可以使用命令行工具(例如rabbittune.exe)来修改你的RabbitMQ配置文件。这将帮助你确保在不同的机器上,接收端能够接收到所有之前发送的消息。
rabbittune -d <your-rabbitmq-server> -c rabbitmq-c.conf
在这个例子中,“`应该替换为你的实际RabbitMQ服务器地址。
- 在Linux上,你可以使用
rabbitmqctl exchange
命令来查看当前可用的交换机以及它们的队列。然后,你可以使用rabbitmqctl queue
命令来查看当前可用的队列以及它们的交换机。如果一个队列同时与多个交换机关联,那么它可以在不同的机器上接收到消息。
rabbitmqctl list-exchanges rabbitmqctl list-queues
- 如果你在Linux上收到了一些消息,在Windows上仍然可以看到这些消息,那可能是因为你的Windows客户端没有正确地设置过滤器或队列绑定。你应该检查你的客户端是否正确地设置了过滤器,并且确认你的队列是否正确地绑定到你的客户端。
// 设置过滤器 std::string filter = "my-filter"; client.set_filter(filter); // 绑定队列 std::string queue_name = "my_queue"; client.bind(queue_name, "my_exchange", filter);
以上就是解决问题的方法。希望这能对你有所帮助!
解决 无用评论 打赏 举报
悬赏问题
- ¥15 vue2项目里接口请求报错,把接口放到浏览器里面正常
- ¥15 Qt安装后运行不了,这是我电脑的问题吗
- ¥15 数据量少可以用MK趋势分析吗
- ¥15 使用VH6501干扰RTR位,CANoe上显示的错误帧不足32个就进入bus off快慢恢复,为什么?
- ¥15 大智慧怎么编写一个选股程序
- ¥100 python 调用 cgps 命令获取 实时位置信息
- ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
- ¥15 C语言使用vscode编码错误
- ¥15 用KSV5转成本时,如何不生成那笔中间凭证
- ¥20 ensp怎么配置让PC1和PC2通讯上