오브젝트를 생성하고이를 JMS 아웃 바운드 엔드 포인트로 전달하는 사용자 정의 인터셉터와 함께 뮬 플로우가 있습니다. JMS 엔드 포인트가 오브젝트를 JMS StreamMessage로 변환하려고 시도하는 예외를 발생시킵니다. 필자가 원하는 것은 엔드 포인트가 Object를 JMS ObjectMessage로 변환하는 것입니다. 그게 어떻게 끝날까요?Mule StreamMessage 대신 ObjectMessage를 사용하기 위해 jms 아웃 바운드 엔드 포인트를 작성하는 방법
여기가 내 흐름입니다.
<spring:beans>
<spring:bean id="connectionFactoryFactory" name="connectionFactoryFactory"
class="ConnectionFactoryFactory">
<spring:property name="properties">
<spring:props>
<spring:prop key="imqAddressList">mqtcp://localhost:30001/jms</spring:prop>
<spring:prop key="imqReconnectAttempts">-1</spring:prop>
</spring:props>
</spring:property>
</spring:bean>
<spring:bean id="connectionFactory" name="connectionFactory"
factory-bean="connectionFactoryFactory" factory-method="createConnectionFactory" />
</spring:beans>
<jms:connector name="JMSConnector" connectionFactory-ref="connectionFactory"
specification="1.1" doc:name="JMS" />
<flow name="Request" doc:name="Request">
<quartz:inbound-endpoint responseTimeout="10000"
doc:name="InfoRequest" jobName="InfoRequest" repeatInterval="5000">
<quartz:event-generator-job />
</quartz:inbound-endpoint>
<custom-interceptor class="StateRequest"/>
<jms:outbound-endpoint connector-ref="JMSConnector"
doc:name="JMS" topic="requests"/>
</flow>
또한 JMS Message Transformer에 객체 추가를 시도했습니다.
<jms:object-to-jmsmessage-transformer returnClass="javax.jms.ObjectMessage" name="Object_to_JmsMessage" doc:name="Object to JmsMessage"/>
<jms:outbound-endpoint connector-ref="JMSConnector"
doc:name="JMS" topic="requests" transformer-refs="Object_to_JmsMessage"/>
요격기를 사용하는 이유는 무엇입니까? 흐름의 실행을 중단시킬 가능성이 있습니까? –
또한 인터셉터에서 반환하는 유형은 무엇입니까? 'Serializable'을 구현합니까? –
예, 추가 정보를 요청할 필요가없는 경우가 있습니다. 인터셉터는 Request의 객체를 생성하여 Serializable을 구현합니다. 개체를 serialize하고 BytesMessage를 만든 것으로 추정되는 바이트를 보냈지 만 서버 구현자는 그의 코드가 ObjectMessage 만 받아 들일 것이라고 말합니다. – CAB