2015-08-27 2 views
1

Поясню свою конфигурацию:Невозможно Вытащите Сообщение от очереди

  1. ActiveMQ 5.12.0
  2. AnyPoint Студия 5.2.1
  3. Mule 3.6.1

    потока применения:

Config

Я использую FunctionalTestCase для публикации и получения сообщения из очереди.

MuleClient client = muleContext.getClient(); 
String productAsJson = "{\"name\":\"Widget\", \"price\":9.99, \"weight\":1.0, \"sku\":\"abcd-12345\"}"; 
client.dispatch("http://localhost:8081/products", productAsJson, null); 
MuleMessage result = client.request("jms://products", RECEIVE_TIMEOUT); 

Что происходит это сообщение становится размещена, но когда я пытаюсь получить его, я получаю строку «{NullPayLoad}».

После отхода через поток, я обнаружил, что полезная нагрузка сообщения при использовании клиента Mule не делает очередь. Просматривая консоль администратора для ActiveMQ, я обнаружил, что информация о сообщении - «{NullPayload}». Когда я проверяю использование клиента Advance Risk, сообщение JSON отправляется правильно.

Любые предложения были бы весьма полезными.

Russ

ответ

3

Это NullPayload при использовании MuleClient, потому что по умолчанию операция HTTP GET будет и привычка ожидать тело, чтобы разобрать.

MuleClient больше подходит для работы с транспортной инфраструктурой Mule, такой как транспорт JMS или старый транспорт HTTP. Я не думаю, что он отлично справляется с новым модулем http-прослушивателя.

Обычно с транспортом можно установить метод через свойство, но это не кажется, что работать с HTTP: слушателю:

 MuleMessage message = getTestMuleMessage(); 
     message.setPayload(productAsJson); 
     message.setProperty("http.method", "POST", PropertyScope.INBOUND); 

     client.send("http://localhost:8089/products", message); 

Я хотел бы предложить использовать стандартный клиент HTTP, такие как Apache HTTP клиента и т.д. и установите метод POST/PUT или любой другой метод, который вам нужно использовать, который ожидает тело.

+0

с любопытством эта работа как с PropertyScope.INBOUND, так и с PropertyScope.OUTBOUND, любая идея почему? –

+0

** Спасибо! ** Вчера, почесывая голову, я последовал вашей рекомендации и перешел на HttpClient. Я смог опубликовать информацию без проблем. Я смог использовать клиента мула, чтобы вывести сообщение из очереди без проблем. – rray

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