2013-09-18 4 views
0

Мне нужно вызвать поток (сервер) из другого потока (клиента) в двух разных приложениях. я предпочел бы, чтобы не создавать банку сервера и включить его в клиенте, как описано в: http://www.mulesoft.org/documentation/display/current/Sharing+Custom+Configuration+FragmentsMule - Вызов потока из другого приложения

Я пытаюсь сделать это с помощью компонентов ут входящих/исходящих, но он не работает, здесь вы файл конфигурации.

Для потока клиента:

<?xml version="1.0" encoding="UTF-8"?> 

<mule xmlns:vm="http://www.mulesoft.org/schema/mule/vm" 
    xmlns:quartz="http://www.mulesoft.org/schema/mule/quartz" 
    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="EE-3.4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/current/mule-vm.xsd 
http://www.mulesoft.org/schema/mule/quartz http://www.mulesoft.org/schema/mule/quartz/current/mule-quartz.xsd 
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"> 
<quartz:connector name="quartzConnector_vm" validateConnections="true" doc:name="Quartz"> 
    <quartz:factory-property key="org.quartz.scheduler.instanceName" value="MuleSchedulerClient1"/> 
    <quartz:factory-property key="org.quartz.threadPool.class" value="org.quartz.simpl.SimpleThreadPool"/> 
    <quartz:factory-property key="org.quartz.threadPool.threadCount" value="3"/> 
    <quartz:factory-property key="org.quartz.scheduler.rmi.proxy" value="false"/> 
    <quartz:factory-property key="org.quartz.scheduler.rmi.export" value="false"/> 
    <quartz:factory-property key="org.quartz.jobStore.class" value="org.quartz.simpl.RAMJobStore"/> 
    </quartz:connector> 
    <flow name="scheduleFlow2" doc:name="scheduleFlow2"> 
     <quartz:inbound-endpoint jobName="myQuartzJobName2" repeatInterval="7000" responseTimeout="10000" doc:name="Quartz"> 
      <quartz:event-generator-job groupName="DEFAULT" jobGroupName="DEFAULT"> 
      </quartz:event-generator-job>  
     </quartz:inbound-endpoint> 
     <expression-component doc:name="Expression"><![CDATA[payload="test";]]></expression-component> 
     <vm:outbound-endpoint exchange-pattern="request-response" path="dispatchSingleConfiguration" doc:name="VM"> 
      <vm:transaction action="NONE"/> 
     </vm:outbound-endpoint> 
    </flow> 

поток сервер просто что-то вроде этого:

<flow name="prepareInputData" doc:name="prepareInputData"> 
     <vm:inbound-endpoint exchange-pattern="request-response" path="dispatchSingleConfiguration" doc:name="VM"> 
      <vm:transaction action="NONE"/> 
     </vm:inbound-endpoint> 
     <set-variable variableName="nomeFileProperties" value="#[payload]" doc:name="Variable"/> 
</flow> 

Можно ли установить правильно путь в виртуальной машине конечных точек, чтобы входящий/исходящий VM связь? Я мог бы использовать http-вызов, но я думаю, что вызов VM является более чистым решением. Я не прав? Спасибо

ответ

1

VM в настоящее время (Mule 3.4) только для вызовов внутри одного приложения: для выполнения удаленных вызовов проще всего использовать HTTP.

+0

Благодарим за ответ. Я немного смущен тем, о чем говорит «В памяти VM». Два приложения mule на одном сервере не используют одну и ту же часть памяти, в то время как все компоненты в одном приложении работают? Правильно ли это? – user1820620

+1

Извините за отсутствие ясности: виртуальная машина предназначена только для вызовов в тех же приложениях Mule. Различные приложения в одном контейнере Mule (то же JVM) или удаленных приложениях не могут связываться через транспорт VM. –

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