我通过一个简单的docker-compose文件运行这些实例:
version: '3'
services:
rabbitmq:
image: "rabbitmq:3.8.3"
ports:
- "5672:5672"
rabbitmq-management:
image: "rabbitmq:3-management"
ports:
- "15672:15672"
在那里,我通过管理面板创建了1个exchange和1个队列:
from("rabbitmq:main_exchange?addresses=localhost:5672" +
"&passive=true"+
"&autoDelete=false" +
"&declare=false" +
"&queue=in_queue" +
"&routingKey=in_queue_routing_key")
.log("received from queue")
.to("file:done");
当我通过主交换将消息发布到in_queue时,什么也不会发生。骆驼路线不能接收信息。
我尝试了以下可能的解决方案:
>
被动队列取决于RabbitMQ中已经可用的队列。
如果该选项为true,则camel声明交换和队列名称并将它们绑定在一起。如果该选项为false,camel将不会在服务器上声明exchange和队列名称。
代码示例:
from("file:test") .log("add to route") .to("rabbitmq:main_exchange?addresses=localhost:5672" + "&passive=true"+ "&autoDelete=false" + "&declare=false" + "&queue=in_queue" + "&routingKey=in_queue_routing_key");
但是在重新启动消费者路由(这个代码示例上面的路由)之后,消费者路由确实恢复了。
资料来源:
- https://camel.apache.org/components/latest/rabbitmq-component.html
看起来我发现了一个错误,Rabbitmq有一个管理+实例映像,而不是一个独立的管理映像。这导致运行了两个RabbitMQ实例,其中一个是我正在轮询并查看的,第二个是操作发生的地方,导致我没有找到任何东西,但应用程序仍在工作。
这是我的docker-compose文件:
version: '3'
services:
rabbitmq-with-management:
image: "rabbitmq:3-management"
ports:
- "5672:5672"
- "15672:15672"
现在一切都按预期进行。
下面是两种主要的方法。 代码:
考虑下面的优先级类声明<代码>类优先级队列 我的想法: 我能想到的一件事是,这将强制优先级队列使用对象比较器,并且不会提供实现其自定义比较器的能力,因为类的用户可能希望基于某个不同的比较器构建队列。
priority_queue,comparator(query,d)>min_heap; main.cpp:20:7:注意:“comparator”不是文字,因为: class comparator{ main.cpp:20:7:注意:“comparator”不是聚合,没有普通的默认构造函数,也没有不是复制或移动构造函数的constexpr构造函数 Main.cpp:92:65:注意:应为类型,但
使用自定义运算符声明这样的优先级队列时出错 错误- ^/代码/解决方案。cpp:33:32:错误:在“,”令牌优先级_队列(间隔、向量、比较1)p之前应为主表达式; ^/代码/解决方案。cpp:33:49:错误:在“,”令牌优先级_队列(间隔、向量、比较1)p之前应为主表达式^ /code/Solution.cpp:33: 58:错误:预期的主表达式之前')'令牌priority_queue(区间
我将与一起使用中的这个库。所有使用者均为,所有队列均为(4小时)。 我有很多队列没有任何挂起的ack,但仍然保存着数百条消息。此外,队列不会在应该过期时过期,这将在几天后产生性能问题。我没有找到任何理由来解释为什么消息在ack处理之后仍然在队列中。 谢谢 管理工具中的一些快照:
我使用的是PriorityQueue和我自己的比较器,但最终结果并不总是好的。我应该按平均成绩、姓名、身份证进行排序。最后,它应该返回队列中剩余的名称。其余的名字都很好,但顺序不同。输入(名称、平均等级、识别号): 预期产出: 我的结果: 你能帮我找出问题所在吗?提前谢谢你!