与Windows AQ的Spring集成不一致出现问题

时间:2018-01-29 14:42:01

标签: spring-integration oracle-aq

我使用Spring与Oracle AQ集成,配置代码如下。     目前使用以下配置,即使在oracle端成功出列,也无法一致地调用服务激活器,在使用应用程序日志成功取消后无法跟踪消息,甚至没有在日志上显示单个错误消息。在jms适配器中尝试调试,跟踪和信息选项,但没有来自日志详细信息的线索。我已经向Oracle团队验证了enque和deque消息,但健康检查报告正在清楚地提到消息已成功出列。
    在使用spring

调用服务激活器时,非常需要您帮助摆脱这种不一致的行为
<int:logging-channel-adapter id="jmslogger" log-full-message="true" level="TRACE"/>

<!-- Oracle Advanced Queue Integration -->
    <bean id="jdbc4NativeJdbcExtractor"
          class="org.springframework.jdbc.support.nativejdbc.Jdbc4NativeJdbcExtractor"
          p:connectionType="oracle.jdbc.driver.OracleConnection" />

    <orcl:aq-jms-connection-factory
        id="oracleAqConnectionFactory"
        use-local-data-source-transaction="true"
        native-jdbc-extractor="jdbc4NativeJdbcExtractor"
        data-source="dataSource"/>

    <!-- Siebel Atlas Service Request - Oracle Advanced Queue Integration -->
    <bean id="jmsJsonMessageConverter" class="org.springframework.jms.support.converter.MappingJackson2MessageConverter"
        p:typeIdPropertyName="javaDtoClass"
    />

    <int:channel id="submitSiebelAtlasCreateServiceRequestOutboundRequestChannel" ></int:channel>

    <int:channel id="submitSiebelAtlasCreateServiceRequestOutboundRequestEnrichedChannel" >
        <int:interceptors>
            <int:wire-tap channel="jmslogger"/>
        </int:interceptors>
    </int:channel>

    <int:channel id="createSiebelAtlasCreateServiceRequestOutboundReplyChannel" />

    <int:logging-channel-adapter id="createSiebelAtlasCreateServiceRequestOutboundReplyChannelLogger"
        channel="createSiebelAtlasCreateServiceRequestOutboundReplyChannel" />

    <int:gateway
        id="submitSiebelAtlasCreateServiceRequestMessagingService"
        service-interface="ServiceRequestOutboundGatewayMessagingService"
        default-request-channel="submitSiebelAtlasCreateServiceRequestOutboundRequestChannel"
        default-reply-channel="submitSiebelAtlasCreateServiceRequestOutboundReplyChannel" />

    <int:header-enricher input-channel="submitSiebelAtlasCreateServiceRequestOutboundRequestChannel" output-channel="submitSiebelAtlasCreateServiceRequestOutboundRequestEnrichedChannel">
        <int:correlation-id expression="payload.getRequestId()"/>
    </int:header-enricher>

    <!-- Outbound driven channel adapter, meaning messagings are being sent to / queued in AQ -->
    <int-jms:outbound-channel-adapter
        id="siebelAtlasCreateServiceRequestJmsOutboundChannelAdapter"
        destination-name="Q_NAME"
        channel="submitSiebelAtlasCreateServiceRequestOutboundRequestEnrichedChannel"
        connection-factory="oracleAqConnectionFactory"
        message-converter="jmsJsonMessageConverter"
        auto-startup="true">
    </int-jms:outbound-channel-adapter>

    <int:service-activator
        output-channel="createSiebelAtlasCreateServiceRequestOutboundReplyChannel"
        input-channel="createSiebelAtlasCreateServiceRequestInboundRequestChannel"
        ref="createCustomerRelationshipsSiebelAtlasServiceRequestService"
        method="create">
    </int:service-activator>

    <int:channel id="createSiebelAtlasCreateServiceRequestInboundRequestChannel">
        <int:interceptors>
            <int:wire-tap channel="jmslogger"/>
        </int:interceptors>
    </int:channel>

    <!-- Inbound message driven channel adapter, meaning messagings are being consumed / dequeued from AQ -->
    <int-jms:message-driven-channel-adapter connection-factory="oracleAqConnectionFactory"
                                            message-converter="jmsJsonMessageConverter"
                                            destination-name="Q_NAME"
                                            channel="createSiebelAtlasCreateServiceRequestInboundRequestChannel"
                                            acknowledge="transacted"
                                            max-concurrent-consumers="5"
                                            transaction-manager="transactionManager"
                                            auto-startup="true"
                                            concurrent-consumers="2" />

0 个答案:

没有答案