【问题标题】:How to organize broker message redelivery in ActiveMQ for PHP Stomp client如何在 ActiveMQ for PHP Stomp 客户端中组织代理消息重新传递
【发布时间】:2013-12-18 22:56:43
【问题描述】:

我正在尝试使用 ActiveMQ 5.8.0 和 PHP Stomp 扩展来实现代理重新交付。但这并没有按预期工作。

回滚消息的 PHP 订阅者

define('QUEUE_NAME', '/queue/Task.Test');

$stomp = new Stomp();

$stomp->subscribe(QUEUE_NAME, array(
    'activemq.prefetchSize' => 10,
));

while (true) {

    $tid = uniqid('tid');
    $stomp->begin($tid);

    try {
        $frame = $stomp->readFrame();
        if ($frame) {
            print_r($frame->headers);
            $stomp->ack($frame->headers['message-id'], array('transaction' => $tid));
            echo "Get message {$frame->headers['message-id']}, rollback it", PHP_EOL;
            $stomp->abort($tid);
        } else {
           $stomp->commit($tid);
        }
    } catch (StompException $e) {
        $stomp->abort($tid);
    }
}

ActiveMQ 配置(调度程序已启用):

    <plugins>
        <redeliveryPlugin fallbackToDeadLetter="true" sendToDlqIfMaxRetriesExceeded="true">
            <redeliveryPolicyMap>
                <redeliveryPolicyMap>
                    <redeliveryPolicyEntries>
                        <!-- a destination specific policy -->
                        <redeliveryPolicy queue=">" maximumRedeliveries="2" redeliveryDelay="10000" />
                    </redeliveryPolicyEntries>
                    <!-- the fallback policy for all other destinations -->
                    <defaultEntry>
                        <redeliveryPolicy maximumRedeliveries="2" initialRedeliveryDelay="5000" redeliveryDelay="10000" />
                    </defaultEntry>
                </redeliveryPolicyMap>
            </redeliveryPolicyMap>
        </redeliveryPlugin>
    </plugins>

配置订阅者接收所有消息并回滚它们,因此它们返回队列,但我希望它们在延迟后重新传递。 ACK有特殊状态:“poison ack”,但不知道怎么指定。

如何在代理端启用重新交付?

【问题讨论】:

  • 您的 redeliveryPolicy 已经设置了 redeliveryDelay。你还想要什么?

标签: php activemq messaging stomp


【解决方案1】:

实际上,重新投递需要STOMP Protocol version >=1.1 中定义的 NACK 命令。 PHP Stomp 客户端仅支持 1.0 版本,因此无法为此扩展启用重新交付。但是,使用 nack() 方法和标头处理很容易扩展 Stomp 类。希望这些信息对某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-24
    • 2020-10-04
    • 1970-01-01
    • 2021-06-04
    • 2015-04-25
    • 2012-07-15
    • 1970-01-01
    • 2012-10-02
    相关资源
    最近更新 更多