2016-12-16 11 views
1

Я использую sompt.py для доступа к моему серверу ActiveMQ.Как назначить сообщение о задержке в activemq с помощью клиента python stomp.py

Создал клиент и отправлял данные. Но я должен Schedule Delay Message.

import time 
import sys 

import stomp 

class MyListener(stomp.ConnectionListener): 
    def on_error(self, headers, message): 
     print('received an error "%s"' % message) 
    def on_message(self, headers, message): 
     print('received a message "%s"' % message) 

conn = stomp.Connection() 
conn.set_listener('', MyListener()) 
conn.start() 
conn.connect('admin', 'password', wait=True) 

conn.subscribe(destination='/queue/test', id=1, ack='auto') 

conn.send(body=' '.join(sys.argv[1:]), destination='/queue/test') 

time.sleep(2) 
conn.disconnect() 

проверить пример JAVA, где пользователь может пройти headers. send также принимает headers как аргумент в stomp.py, но я не знаю, какой ключ мне должен пройти.

stomp.constants У меня нет заголовков для задержки.

Пробовал заголовки AMQ_SCHEDULED_DELAY, но, похоже, не работает.

import time 
import sys 

import stomp 

class MyListener(stomp.ConnectionListener): 
    def on_error(self, headers, message): 
     print('received an error "%s"' % message) 
    def on_message(self, headers, message): 
     print "Time for message receive: %s", time.strftime('%H:%M:%S') 
     print('received a message "%s"' % message) 

conn = stomp.Connection() 
conn.set_listener('', MyListener()) 
conn.start() 
conn.connect(wait=True) 

conn.subscribe(destination='/queue/test', id=1, ack='auto') 

print "Time for send message: %s", time.strftime('%H:%M:%S') 
conn.send(body=' '.join(sys.argv[1:]), destination='/queue/test', headers={'AMQ_SCHEDULED_DELAY': 100000}) 

time.sleep(2) 
conn.disconnect() 

Выход:

[email protected]$ python /tmp/test.py this is test 
Time for send message: %s 14:03:34 
Time for message receive: %s 14:03:34 
received a message "this is test" 

ответ

2

Значение для отправки регулярных сообщений по игре STOMP определения значений в коде Java для брокера, но в качестве краткого справочника вы можете посмотреть на Apache NMS Сайт STOMP для быстрого example.

Значения заключаются в следующем:

"AMQ_SCHEDULED_DELAY" = delay in milliseconds 
"AMQ_SCHEDULED_PERIOD" = repeat period in milliseconds 
"AMQ_SCHEDULED_REPEAT" = repeat count 
"AMQ_SCHEDULED_CRON" = cron entry such as "0 * * * *" 
+0

Привет Тим, но если мы изменим это в 'apache', то она будет применяться ко всем сообщениям? Мне нужно отправить только несколько сообщений с 'delay', все остальные должны обрабатываться с обычным выполнением. – Nilesh

+0

. Я не совсем понимаю ваш вопрос, вы помещаете заголовки в свои сообщения STOMP, когда хотите применить задержку, не знаете, что такое apache вещь, о которой вы спрашиваете, составляет около –

+0

Если я использую 'conn.send (..., ..., headers = {'AMQ_SCHEDULED_DELAY': 10})', то это закроет мое сообщение до 10 секунд? – Nilesh

 Смежные вопросы

  • Нет связанных вопросов^_^