首页 > 解决方案 > 如何在 ActiveMQ 中为 python Stomp 客户端使用消息重新传递

问题描述

我有来自队列的订阅者客户端,我可以确认收到的消息。

当我执行 NACK 时,消息未重新发送到队列。

帮我将消息重新发送到队列。

import ssl

from stompest.config import StompConfig
from stompest.sync import Stomp
from stompest.protocol import StompSpec

user = "admin"
password = "admin"
host = "localhost"
port = 61613

config = StompConfig('tcp://%s:%d' % (host, int(port)), login=user, passcode=password, version=StompSpec.VERSION_1_2,
                     sslContext=sslContext)
client = Stomp(config)

client.connect(host=host)
client.subscribe(destination=destination, headers={StompSpec.ACK_HEADER: StompSpec.ACK_CLIENT_INDIVIDUAL, "id":"1"})


while True:
    data = client.receiveFrame()
    client.nack(data)

activemq.xml 中的代理和重新交付配置

<broker schedulerSupport="true">

        <plugins>
            <redeliveryPlugin fallbackToDeadLetter="true"
                              sendToDlqIfMaxRetriesExceeded="true">
                <redeliveryPolicyMap>
                    <redeliveryPolicyMap>
                        <redeliveryPolicyEntries>
                            <!-- a destination specific policy -->
                            <redeliveryPolicy queue="SpecialQueue"
                                              maximumRedeliveries="4"
                                              redeliveryDelay="10000"/>
                        </redeliveryPolicyEntries>

                        <defaultEntry>
                            <!-- the fallback policy for all other destinations -->
                            <redeliveryPolicy maximumRedeliveries="4"
                                              initialRedeliveryDelay="5000"
                                              redeliveryDelay="10000"/>
                        </defaultEntry>
                    </redeliveryPolicyMap>
                </redeliveryPolicyMap>
            </redeliveryPlugin>
        </plugins>

</broker>

标签: pythonactivemqstomp

解决方案


推荐阅读