我需要编写一些程序来监控 java 中的 activemq 队列。这意味着我需要记录消息何时入队以及何时出队。我的程序不能发送消息或接收消息,它只需要记录。
我发现推送消息和接收消息但这不是我想要做的,只是记录外部进程是否将消息放入队列或从队列中取出。
为了更清楚,我画了一张图
我使用 apache camel 进行集成, 我的 routebuilder 看起来像
public void configure() throws Exception {
Processor queueProcessor = new QueueProcessor();
from("activemq:queue:KBC").process(queueProcessor);
}
它调用followwing处理器
@Override
public void process(Exchange exchange) throws Exception {
Trax_EventDao dao = new Trax_EventDao();
dao.insert(new Trax_Event("Queue",exchange.getExchangeId(),"UP","KBC", new Time(new Date().getTime())));
}
dao 处理数据库连接并插入一条记录
实际的问题是,当我将一条消息推送到队列并且程序运行时,消息被记录下来,这是正常的,但它也会立即被轮询,这是不正常的。 如何在不轮询消息的情况下进行插入?
最佳答案
您可以使用 ActiveMQ Advisory Messages 来监控队列 Activity ...
关于Java监控activemq但不轮询队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29230590/