2014-12-03 8 views
0

Я пытаюсь этот подход автозапуск мул потокаавтоматический запуск Mule поток

Starting a mule flow programmatically using groovy

и она не запускается поток. Вот очень простой тест работать в Mule студии с 3.4.0 CE

<?xml version="1.0" encoding="UTF-8"?> 
<mule xmlns:scripting="http://www.mulesoft.org/schema/mule/scripting"  
xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" 
xmlns:spring="http://www.springframework.org/schema/beans" version="CE-3.4.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.springframework.org/schema/beans  
http://www.springframework.org/schema/beans/spring-beans-current.xsd 
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd 
http://www.mulesoft.org/schema/mule/scripting http://www.mulesoft.org/schema/mule/scripting/current/mule-scripting.xsd"> 

<flow name="auto2Flow1" doc:name="auto2Flow1"> 
    <scripting:component doc:name="Groovy"> 
     <scripting:script engine="Groovy"> 
      muleContext.registry.lookupFlowConstruct('flow1').start() 
     </scripting:script> 
    </scripting:component> 
</flow> 

<flow name="flow1" doc:name="flow1"> 
    <logger level="INFO" doc:name="Logger" message="hello"/> 
</flow> 

</mule> 

Я также попытался это не повезло

<expression-component> 
    app.registry.flow1.start(); 
</expression-component> 

Я предполагаю, что потоки1 автоматически зарегистрирован, но не уверен.

ответ

1

Я думаю, что вы пытаетесь сделать, это не начиная потока, но вместо того, чтобы отправить событие это так, в вашем случае, вы увидите logger выписывать hello.

Для этого используйте:

app.registry.flow1.process(event); 

с 'событиями', являющихся экземпляром DefaultMuleEvent (javadoc).

+0

В моем примере я хочу, чтобы auto2Flow1 начинался с запуска сервера Mule. Он должен вызывать поток 1, который является основным потоком. Я попытался заменить свой файл muleContext.registry.lookupFlowConstruct на ваше утверждение, но, очевидно, я что-то упустил, потому что это не сработало. –

+0

О, это полностью отличается от вашего вопроса. Вы хотите, чтобы 'auto2Flow1' запускался с событием, когда Mule начинает? Я не думаю, что для этого есть что-то. Просто используйте «init-method» на «Веселый боб MuleContextAware», и все будет хорошо. –

0

Потоки запускаются автоматически, вам не нужно «запускать» их.

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

Я хотел бы предложить вам внимательно прочитать документацию: http://www.mulesoft.org/documentation/display/current/Mule+Application+Architecture

0

Вы не должны запустить поток вручную. После развертывания вашего приложения mule локально или в облаке или в помещении поток начнется автоматически. Если вы хотите остановить поток или заморозить поток в течение некоторого времени, вы можете использовать какой-то отличный скрипт что-то вроде сна (1000); в течение некоторого времени

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