ActiveMQ Async发送等待所有要发送的消息

时间:2013-01-09 10:54:35

标签: asynchronous activemq

我正在使用activemq发送消息。由于发送的消息数量和应用程序发送的其他工作量。我启用了异步发送。

当应用程序结束时,我希望确保剩余的消息实际上已发送,因为我们有时会错过连接上的最后一条消息。

在谷歌上面搜索我发现只有警告声明你可能会遗漏一些信息,这是可以接受的,但是我们在大约40%的时间内错过了最后一些信息。我希望改善这种情况。

问:是否有任何方法可以检查activemq生产者/发送者是否发送了所有异步消息?

    ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory( brokerUrl );
    connectionFactory.setUseAsyncSend( true );
    RedeliveryPolicy policy = connectionFactory.getRedeliveryPolicy();
    policy.setInitialRedeliveryDelay( 500 );
    policy.setBackOffMultiplier((short)2);
    policy.setUseExponentialBackOff(true);
    policy.setMaximumRedeliveries(10);

1 个答案:

答案 0 :(得分:1)

您可以将最后一条消息的异步发送模式设置为关闭,这会导致客户端等待发送,直到代理确认已收到消息。需要将Connection对象强制转换为ActiveMQConnection,然后调用setUseAsyncSend(false)