Java监控activemq但不轮询队列

标签 java apache-camel activemq

我需要编写一些程序来监控 java 中的 activemq 队列。这意味着我需要记录消息何时入队以及何时出队。我的程序不能发送消息或接收消息,它只需要记录。

我发现推送消息和接收消息但这不是我想要做的,只是记录外部进程是否将消息放入队列或从队列中取出。

为了更清楚,我画了一张图 enter image description here

我使用 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 ...

参见 http://activemq.apache.org/advisory-message.html

关于Java监控activemq但不轮询队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29230590/

相关文章:

java - 解析 XML 并替换来自不同数据源的值

java - Camel cxf with Spring boot-手动启动路线

apache-camel - 如何在 java dsl 中访问(获取)camel header

java - 删除重复代码的模式

通过 LAN 使用 TCP/IP 进行 Java 聊天

java - PROGUARD:使用 keepInnerClass 标志是否会丢失有关其是否静态的信息

java - 如何删除 cardview 中不必要的顶部填充?

java - 如何将 lastImageSubscriptionRecoveryPolicy 订阅策略应用到目标或使用者?

java - onMessage() : How to handle ? 中的 Long traitement 我希望线程调用此方法

java - JMS 2.0 规范 - JMS 提供者如何检测 JMS 客户端对 Message 对象的更改?