【发布时间】:2015-04-07 17:54:09
【问题描述】:
我需要编写一些程序来监视 java 中的 activemq 队列。这意味着我需要记录消息何时在队列中入队以及消息何时出队。我的程序不能发送消息或接收消息,它只需要记录。
我发现要推送消息和接收消息,但这不是我想要做的,只需记录外部进程是否将消息放入队列或从队列中取出。
为了更清楚,我画了一张图
我使用 apache camel 进行集成, 我的路由构建器看起来像
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 处理数据库连接并插入记录
实际的问题是,当我将消息推送到队列中并且程序运行时,消息被记录下来,这是可以的,但它也会立即被轮询,这是不行的。 如何在不轮询消息的情况下进行插入?
【问题讨论】:
标签: java apache-camel activemq