1

我正在使用 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);
4

1 回答 1

1

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

于 2013-01-09T12:16:33.617 回答