2015-04-06 6 views
1

каждый:
Я новичок в qpid и сталкиваюсь с некоторыми проблемами. обмен созданный мной не может направить сообщение в очередь, следующим образом:
первый я создать durbale очереди «тест-очереди 1» в qpid использовать команду Quid-конфигурации:о qpid exchange, queue

qpid-config add queue test-queue-1 --durable 

Следующая я создать прочный прямой обмен «тест-обменно-1" в qpid также использовать команду qpid-конфигурации:

qpid-config add exchange direct test-exchange-1 --durable 

последнего, в привязывать их, как следовать за командой:

qpid-config bind test-exchange-1 test-queue-1 test-queue-1 

все кажется нормально в qpid-инструмент:

Object Summary: 
ID Created Destroyed Index 
======================================================================================== 
128 12:28:28 -   org.apache.qpid.broker:queue:qmfc-v2-hb-iZ23c6sri0pZ.12680.1 
129 12:28:28 -   org.apache.qpid.broker:queue:qmfc-v2-iZ23c6sri0pZ.12680.1 
130 12:28:28 -   org.apache.qpid.broker:queue:qmfc-v2-ui-iZ23c6sri0pZ.12680.1 
131 12:28:28 -   org.apache.qpid.broker:queue:reply-iZ23c6sri0pZ.12680.1 
132 12:24:17 -   org.apache.qpid.broker:queue:test-queue-1 
133 12:28:28 -   org.apache.qpid.broker:queue:topic-iZ23c6sri0pZ.12680.1 
116 12:27:20 - 

и

org.apache.qpid.broker:binding:org.apache.qpid.broker:exchange:test-exchange-1,org.apache.qpid.broker:queue:test-queue-1,test-queue-1 

теперь я готов испытать их, начать ПРИЕМ/отправить демонстрационную программу:

[[email protected] build]$ ./recv amqp://127.0.0.1/test-queue-1 

отправить сообщение:

[[email protected] build]$ ./send -a amqp://127.0.0.1/test-exchange-1 hi,everyone 

, но «программа recv» не может возвратить какое-либо сообщение.
если я отправить сообщение, как это:

[[email protected] build]$ ./send -a amqp://127.0.0.1/test-queue-1 hi,everyone 

«программа RECV» может ПРИЕМ сообщение:

Address: amqp://127.0.0.1/test-queue-1 
Subject: Hello Subject 
Content: "hi,everyone" 

кто может сказать мне, почему я прочитал AMQP протокол, может быть маршрутный ключ? в сообщении не совпадают с ключом привязки, но если это, как я могу установить ключ маршрутизации? мой recv/send, поданный протоном-c, версия 0.8. qpidd - версия 0.32.

ответ

0

Когда вы отправляете сообщение на qpid-прямой обмен, он перенаправляется в связанную очередь на основе ключа маршрутизации сообщения. В протон-с вы можете установить ключ маршрутизации, установив сообщение-объект с помощью функции

PN_EXTERN int pn_message_set_subject (pn_message_t* msg,const char* subject) 

К сожалению, это не реализовано в примере send.c, который поставляется с протон-с v0.8 Вы можете вставить следующая строка somewhere around here и восстановить ваши send исполняемого

pn_message_set_subject(message, "my-routing-key"); 

Вы можете также с некоторым усилием, добавить новый параметр командной строки, чтобы принять и использовать маршрутный ключ от ./send

Java-пример реализует параметр -s, чтобы установить тему сообщения.

0

Я тоже думаю, что это обязательная проблема.

Попробуйте связывание с последующим, qpid-конфигурации связывания тест-обменно-1 тест-очереди-1 тест-обменно-1

@Feng Fang: "тест-обменно-1" является одним из ключевых маршрутизации, который вы используете при отправке сообщения. Если это не дает попробовать «test-exchange-1/test-exchange-1»

Хранить отдых как есть, и попробовать.

Надеюсь, это поможет!

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