Процессор пересылки сообщений WSO2 ESB не отправляет в конечную точку

Я пытаюсь реализовать процессор пересылки сообщений из хранилища сообщений jms. Я следовал стандартному примеру. Я успешно заполняю хранилище JMS из своего API, но когда я активирую обработчик сообщений, я получаю следующую ошибку. Похоже, что URL-адрес конечной точки, на который я хочу переслать сообщение, имеет неверный формат и добавил часть URL-адреса, на который я первоначально отправил сообщение, чтобы поместить объект в хранилище JMS. На данный момент полезная нагрузка жестко запрограммирована в API.

 ERROR - ForwardingService BlockingMessageSender of message processor
   [TestStockMessageProcessor] failed to send message to the endpoint.
 INFO - ForwardingService Pausing the service of the message processor
  [TestStockMessageProcessor]
 INFO - HTTPSender Unable to sendViaPost to
    url[http://TestServer/Webservices.API/stock/stockReference/bookIn]
 ...Transport error : 404 Error: NOT Found

Я использую клиент Google REST и отправляю сообщения по следующему URL-адресу

  "http://localhost:8280/dev_depot/stock/stockReference/bookIn"

Мой API называется dev_depot

Ниже моя конфигурация

Мой API

<resource methods="POST" uri-template="/stock/stockReference/bookIn">
  <inSequence>
     <payloadFactory media-type="json">
        <format>   { "AreaId": 1, "StockStatusId": 1, "AbsStockNo": 1, "StockNo":
  "TestJMSMS", "SKU": "7", "CatalogueNo": "300", "BadPackaging": false}   </format>
        <args></args>
     </payloadFactory>
     <property name="OUT_ONLY" value="true"></property>
     <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"></property>
     <store messageStore="JMSMS"></store>
     <log level="full"></log>
  </inSequence>
  <outSequence>
     <log level="full"></log>
  </outSequence>
</resource>

Процессор сообщений

<messageProcessor name="TestStockMessageProcessor" class="org.apache.synapse.message.processor.impl.forwarder.ScheduledMessageForwardingProcessor" targetEndpoint="TestEndpoint" messageStore="JMSMS" xmlns="http://ws.apache.org/ns/synapse">
   <parameter name="interval">1000</parameter>
   <parameter name="client.retry.interval">1000</parameter>
   <parameter name="max.delivery.attempts">2</parameter>
   <parameter name="is.active">false</parameter>
</messageProcessor>

Конечная точка

<endpoint xmlns="http://ws.apache.org/ns/synapse" name="TestEndpoint">
<address uri="http://TestServer/Webservices.API/stock">
  <suspendOnFailure>
     <progressionFactor>1.0</progressionFactor>
  </suspendOnFailure>
  <markForSuspension>
     <retriesBeforeSuspension>0</retriesBeforeSuspension>
     <retryDelay>0</retryDelay>
  </markForSuspension>
 </address>
</endpoint>

Я также попытался написать прокси-сервис и получил другую ошибку, как показано ниже:

INFO - HTTPSender Unable to send ViaPost to
url[http://TestServer/Webservices.API/stock] : No element was found to write: 
java.lang.ArrayIndexOutOfBoundsException

Прокси-сервис

<proxy xmlns="http://ws.apache.org/ns/synapse"
   name="MessageProcessorTest"
   transports="https,http"
   statistics="disable"
   trace="disable"
   startOnLoad="true">
<target>
  <inSequence>
     <payloadFactory media-type="json">
        <format>   { "AreaId": 1, "StockStatusId": 1, "AbsStockNo": 1, "StockNo":
 "TestProxyJMSMS", "SKU": "7", "CatalogueNo": "300", "BadPackaging": false} 
 </format>
        <args/>
     </payloadFactory>
     <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>
     <property name="OUT_ONLY" value="true"/>
     <property name="target.endpoint" value="TestEndpoint"/>
     <log level="full"/>
     <store messageStore="JMSMS"/>
  </inSequence>
  </target>
 <description/>
</proxy>

На этот раз URL-адрес конечной точки кажется правильным. Я использую тот же процессор сообщений, но разные способы заполнения хранилища сообщений JMS.

Буду признателен за любые подсказки о том, что я делаю неправильно.


person macca18    schedule 31.07.2014    source источник
comment
Вы пытались изменить конечную точку как localhost:8280/dev_depot и проверить   -  person Vanji    schedule 01.08.2014
comment
Еще нет. Попробую.   -  person macca18    schedule 03.08.2014


Ответы (1)


Попробуйте добавить это свойство в свой API перед посредником хранилища:

<property name="REST_URL_POSTFIX" action="remove" scope="axis2"/>
person Jean-Michel    schedule 05.08.2014
comment
Я не использую посредника хранилища для заполнения хранилища сообщений. Я добавил предложенное вами свойство в свой API. Я добавил его как первую запись в моей последовательности перед фабрикой полезной нагрузки, но все равно получил ту же ошибку. - person macca18; 05.08.2014