Простой пример бросков Apache Camel и Mina (Karaf) CamelExchangeException: невозможно записать тело - PullRequest
0 голосов
/ 25 января 2012

Я взял простой пример activemq-camel-blueprint из ServiceMix 4.4.0 и добавил в сокет Mina TCP для чтения из строк ASCII.

<camelContext xmlns="http://camel.apache.org/schema/blueprint">
    <route>
        <from uri="mina:tcp://localhost:4001?textline=true&amp;sync=false" />
        <bean ref="NMEAString" method="ingest" />
        <to uri="activemq:queue:LOG.ME"/>
    </route>
    <route>
        <from uri="activemq:queue:LOG.ME" />
        <to uri="log:ExampleActiveMQRouterBlueprint" />
    </route>
</camelContext>

Я запускаю пример в Karaf.Все, что делает NMEAString - это распечатывает объект в STDOUT.

Я запускаю небольшую программу для передачи файла ASCII в сокетное соединение.Он выдвигает весь файл (~ 40) строк за несколько миллисекунд.

Я вижу распечатку STDOUT внутри Карафа примерно через 30 секунд между строк.Я получаю следующие исключения в моем файле servicemix.log:

Кто-нибудь знает, что означает это исключение и почему оно выдает его на таком простом примере?

org.apache.camel.CamelException: org.apache.camel.CamelExchangeException: Невозможно записать тело.Exchange [Message: [Body is null]] в org.apache.camel.component.mina.MinaConsumer $ ReceiveHandler.exceptionCaught (MinaConsumer.java:91) [186: org.apache.camel.camel-mina: 2.8.3]в org.apache.mina.common.support.AbstractIoFilterChain $ TailFilter.exceptionCaught (AbstractIoFilterChain.java:564) [187: org.apache.servicemix.bundles.mina: 1.1.7.5] в org.apache.mina.common.su.AbstractIoFilterChain.callNextExceptionCaught (AbstractIoFilterChain.java:345) [187: org.apache.servicemix.bundles.mina: 1.1.7.5] в org.apache.mina.common.support.AbstractIoFilterChain.IjFjter.jjj.jjj.jj[187: org.apache.servicemix.bundles.mina: 1.1.7.5] at org.apache.mina.common.support.AbstractIoFilterChain $ EntryImpl $ 1.exceptionCaught (AbstractIoFilterChain.java:643) [187: org.apache.serm.bundles.mina: 1.1.7.5] в org.apache.mina.filter.executor.ExecutorFilter.processEvent (ExecutorFilter.java:224) [187: org.apache.servicemix.bundles.mina: 1.1.7.5] в org.apache.mina.filter.executor.ExecutorFilter $ ProcessEventsRunnable.run (ExecutorFilter.java:264) [187: org.apache.servicemix.bundles.mina: 1.1.7.5] в java.util.concurrent.ThreadPoolExecutor $ Worker.runTask (ThreadPoolExecutor.java:886 [:0_29] в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:908) [: 1.6.0_29] в java.lang.Thread.run (Thread.java:662) [: 1.6.0_29] Причина:: org.apache.camel.CamelExchangeException: Невозможно записать тело.Обмен [Сообщение: [Тело является нулевым]] в org.apache.camel.component.mina.MinaHelper.writeBody (MinaHelper.java:55) [186: org.apache.camel.camel-mina: 2.8.3] в org.apache.camel.component.mina.MinaConsumer $ ReceiveHandler.messageReceived (MinaConsumer.java:148) [186: org.apache.camel.camel-mina: 2.8.3] в org.apache.mina.common.support.AbstractIoFilterChater$ TailFilter.messageReceived (AbstractIoFilterChain.java:570) [187: org.apache.servicemix.bundles.mina: 1.1.7.5] at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageoil_haj187: org.apache.servicemix.bundles.mina: 1.1.7.5] at org.apache.mina.common.support.AbstractIoFilterChain.access $ 1100 (AbstractIoFilterChain.java:53) [187: org.apache.servicemix.bundles.mina: 1.1.7.5] at org.apache.mina.common.support.AbstractIoFilterChain $ EntryImpl $ 1.messageReceived (AbstractIoFilterChain.java:648) [187: org.apache.servicemix.bundles.mina: 1.1.7.5] в org.apache.mina.filter.executor.ExecutorFilter.processEvent (ExecutorFilter.java:220)[187:org.apache.servicemix.bundles.mina:1.1.7.5] ... еще 4

1 Ответ

0 голосов
/ 26 января 2012

L.S.,

Только что сам попробовал это с Apache ServiceMix 4.4.0, и нижеприведенный файл чертежа отлично работает для меня, поэтому я подозреваю, что ваш бин каким-то образом делает недействительным или удаляет тело сообщения (например, вызывая getOut () на Exchange и создавая пустой сообщение или что-то подобное).

Не могли бы вы попробовать удалить компонент из вашего маршрута, чтобы убедиться, что он действительно является причиной проблемы? Если это так, не стесняйтесь опубликовать код самого компонента, и мы поможем вам найти проблему, которая кроется там ...

С уважением,

Герт

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">

<camelContext xmlns="http://camel.apache.org/schema/blueprint">
  <route>
    <from uri="mina:tcp://localhost:4001?textline=true&amp;sync=false" />
    <to uri="log:test-read-stream"/>
    <to uri="activemq:queue:LOG.ME"/>
  </route>
  <route>
    <from uri="activemq:queue:LOG.ME" />
    <to uri="log:ExampleActiveMQRouterBlueprint" />
  </route>
</camelContext>

</blueprint>
...