PingShanJuShi 2015-05-08 03:52 采纳率: 0%
浏览 1222

rabbitmq-c消息接收表现不一样

rabbitmq-C的三个问题:1.windows下可以接收到以前未被接收的消息,而linux下只可以接收到即时消息
2.windows下可以接收到不同exchange的相同queue名称的消息,而linux下只能接收到指定exchange下指定queue名称的消息
3.linux下已经接收的消息在server管理中并未消除,打开windows接收端依旧可以收到被linux下的接收端收到过的消息
希望了解rabbitmq-c的大神帮忙解决

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-03 20:28
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题可能是因为你的Windows和Linux版本的RabbitMQ配置文件(rabbitmq.conf)有所不同。以下是针对这些问题的一些解决方案:

    1. 在Windows上,你可以使用命令行工具(例如rabbittune.exe)来修改你的RabbitMQ配置文件。这将帮助你确保在不同的机器上,接收端能够接收到所有之前发送的消息。
    rabbittune -d <your-rabbitmq-server> -c rabbitmq-c.conf
    

    在这个例子中,“`应该替换为你的实际RabbitMQ服务器地址。

    1. 在Linux上,你可以使用rabbitmqctl exchange命令来查看当前可用的交换机以及它们的队列。然后,你可以使用rabbitmqctl queue命令来查看当前可用的队列以及它们的交换机。如果一个队列同时与多个交换机关联,那么它可以在不同的机器上接收到消息。
    rabbitmqctl list-exchanges
    rabbitmqctl list-queues
    
    1. 如果你在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通讯上