首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveMQ-CPP -不应用邮件重新传输延迟

ActiveMQ-CPP -不应用邮件重新传输延迟
EN

Stack Overflow用户
提问于 2013-03-20 20:35:09
回答 2查看 466关注 0票数 0

我使用ActiveMQ-CPP3.4.5从C++程序连接到message broker。我遇到的问题与重新交付策略有关。返回到队列的消息会立即重新传递。这不是我所期望的行为。我预计消息将在通过重新投递策略设置的特定时间段后返回。

这是一段代码片段,显示了我设置重新交付策略的方式:

代码语言:javascript
复制
policy = new activemq::core::policies::DefaultRedeliveryPolicy();

policy->setInitialRedeliveryDelay(0);
policy->setRedeliveryDelay(10000);
policy->setMaximumRedeliveries((int)activemq::core::RedeliveryPolicy::NO_MAXIMUM_REDELIVERIES);

connectionFactory.setRedeliveryPolicy(policy);

正如我之前所说的,我希望消息在10000毫秒后重新发送,但它们不是。它们会立即返回给消费者。

有谁知道这种行为的原因是什么?

EN

回答 2

Stack Overflow用户

发布于 2013-03-20 22:00:32

您将初始延迟设置为零,以便在第一次回滚事务时立即重新发送它们。如果您希望它们在第一个重新交付周期中延迟,则还需要将初始延迟设置为10000。

票数 0
EN

Stack Overflow用户

发布于 2013-03-21 15:28:48

当我查看ActiveMQ-CPP源代码时,我在ActiveMQConsumer.cpp文件中发现了以下代码片段:

代码语言:javascript
复制
if( internal->redeliveryDelay > 0 && !this->internal->unconsumedMessages->isClosed() ) {
// TODO - Can't do this until we can control object lifetime.
// Start up the delivery again a little later.
// this->internal->scheduler->executeAfterDelay(
//    new StartConsumerTask(this), internal->redeliveryDelay);
    start();
} else {
    start();
}

因此,回档后似乎根本不考虑redeliveryDelay。我想这就是为什么我的消息会在回滚后立即到达。

onMessage方法:

代码语言:javascript
复制
void BaseProdListener::onMessage( const cms::Message* message ){    
log4cxx::Logger::getLogger("BaseProdListener")->info("onMessage");

_message = message;

try {
    const cms::TextMessage* textMessage = dynamic_cast< const cms::TextMessage* >( message );
    std::string text = "";
    if( textMessage != NULL ) {
        text = textMessage->getText();
        log4cxx::Logger::getLogger("BaseProdListener")->debug("Received message:" + text);
        handleMessage(text);
    }
} catch (cms::CMSException& e){
    log4cxx::Logger::getLogger("BaseProdListener")->error(e.getStackTraceString());
}

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15523712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档