Mule jms与客户端_确认模式?即使我没有';我不承认

Mule jms与客户端_确认模式?即使我没有';我不承认,jms,mule,Jms,Mule,我已经创建了一个简单的mulejms流,使用CLIENT_-ACKNOWLEDGE模式。我对“CLIENT_ACKNOWLEDGE”的理解是,我们必须在接收方或客户端显式地确认消息,它不会从队列中消费,直到它不会确认 <spring:beans> <spring:bean name="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">

我已经创建了一个简单的mulejms流,使用CLIENT_-ACKNOWLEDGE模式。我对“CLIENT_ACKNOWLEDGE”的理解是,我们必须在接收方或客户端显式地确认消息,它不会从队列中消费,直到它不会确认

 <spring:beans>
        <spring:bean name="connectionFactory"
            class="org.apache.activemq.ActiveMQConnectionFactory">
            <spring:property name="brokerURL" value="tcp://localhost:61616" />
            <spring:property name="redeliveryPolicy">
                <spring:bean class="org.apache.activemq.RedeliveryPolicy">
                    <spring:property name="maximumRedeliveries" value="10" />
                    <spring:property name="initialRedeliveryDelay"
                        value="1000" />
                </spring:bean>
            </spring:property>
        </spring:bean>
        </spring:beans>
    <jms:connector name="Active_MQ3" connectionFactory-ref="connectionFactory" acknowledgementMode="CLIENT_ACKNOWLEDGE" maxRedelivery="10" persistentDelivery="true" specification="1.1" />



<flow name="main1" doc:name="main1">
                <http:inbound-endpoint exchange-pattern="request-response" host="localhost" path="test" port="8099" doc:name="HTTP"/>

                <logger message="starting main flow" level="INFO" doc:name="Logger"/>

                    <jms:outbound-endpoint queue="StudioIN" connector-ref="Active_MQ3" doc:name="JMS">
                         <jms:transaction action="NONE"/>
                    </jms:outbound-endpoint>

            </flow>

          //reading msg from queue, not acknowledging 

            <flow name="worker1" doc:name="worker1">
                <jms:inbound-endpoint queue="StudioIN" connector-ref="Active_MQ1" doc:name="JMS"/>
                <logger message="Consuming payload: #[payload]" level="INFO" doc:name="Logger"/>
            </flow>
        </mule>

//正在从队列中读取消息,未确认
在我的测试流中,我没有确认消息,但它仍然被消耗掉了。我们如何将消息保持在队列中,直到它得到客户端或接收方的确认

<!-------------- Updated flow ------------------------>
<flow name="worker1" doc:name="worker1">
        <jms:inbound-endpoint queue="StudioIN" connector-ref="Active_MQ1" doc:name="JMS">
            <jms:client-ack-transaction action="ALWAYS_BEGIN"/>
        </jms:inbound-endpoint>
        <logger message="Consuming payload: #[payload]" level="INFO" doc:name="Logger"/>
    </flow>

您的JMS入站端点中缺少一个
客户端确认事务
元素

该文件在这一主题上非常单薄:


我计划使用此标记向您提供集成测试的链接,但找不到任何链接:(请参阅:

感谢您的回复。我尝试了使用option,但它仍然会自动使用而不需要任何确认。我认为我们应该有一些东西来帮助调用消息的确认方法。我已使用流“worker1”更新了我的帖子。如果流成功,消息将由Mule自动进行客户端确认。请尝试引发异常看消息是否仍然被使用。太棒了,现在我可以执行代码了,如果捕获到异常消息就不会被使用。在同一页上,我还有两个问题:1)确认来自flow-worker1的消息是否捕获异常的最佳方法是什么。我想确认来自worker1的消息,以便继续执行流。2)如果使用客户端确认事务,它会使我的流同步还是异步?(因为在mule事务中它强制流同步)对不起,我没有看到这些。回答评论中提出的问题可能会被忽略。1) 您不能显式地确认消息,您可以捕获异常,以便流正常结束并完成确认。2) 它将是同步的。只需使用一些新信息更新此消息,您可以通过以下说明确认消息: