Как использовать повторную доставку сообщений в ActiveMQ для клиента Stomp Python - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть клиентский клиент из очереди, я могу подтвердить полученное сообщение.

, когда я делаю 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>
...