Mule AMQP连接器尝试重新获取消息失败

Mule AMQP连接器尝试重新获取消息失败,mule,amqp,mule-component,Mule,Amqp,Mule Component,我正在使用AMQP端点,并在我的Mule应用程序的其他地方使其工作(这里提到了一个警告[) 我正在尝试建立一个可靠的SMTP队列,但遇到问题 我假设如果SMTP连接器无法执行,它将抛出异常,因此通过将消息确认设置为手动,捕获SMTP异常并在异常策略中拒绝(并重新查询)消息,系统应该处理SMTP中断 我的代码(稍微简化)如下所示: <amqp:connector name="connector.amqp.mule.default" ackMode="MANUAL" doc:name="AMQ

我正在使用AMQP端点,并在我的Mule应用程序的其他地方使其工作(这里提到了一个警告[)

我正在尝试建立一个可靠的SMTP队列,但遇到问题

我假设如果SMTP连接器无法执行,它将抛出异常,因此通过将消息确认设置为手动,捕获SMTP异常并在异常策略中拒绝(并重新查询)消息,系统应该处理SMTP中断

我的代码(稍微简化)如下所示:

<amqp:connector name="connector.amqp.mule.default" ackMode="MANUAL" doc:name="AMQP Connector" validateConnections="true" host="${amiab-rabbitmq-hostname}" port="${amiab-rabbitmq-portnumber}" password="${amiab-rabbitmq-password}" username="${amiab-rabbitmq-username}"/>
<smtp:connector name="smtpConnector" contentType="text/html" doc:name="SMTPConnector"/>
<flow name="utility-smtpFlow">
  <amqp:inbound-endpoint exchangeName="AMQP.DEFAULT.EXCHANGE" queueName="utilitySMTP" exchangeType="direct"  responseTimeout="10000"  doc:name="AMQP-0-9" queueDurable="true"/>
    <logger message="Recevied SMTP Message from Queue" level="INFO" doc:name="Logger"/>
    <smtp:outbound-endpoint host="${smtp-hostname}" user="${smtp-username}" password="{smtp-password}" to="#[flowVars.smtpTo]" subject="Testing Message" responseTimeout="10000" doc:name="SMTP"/>
    <amqp:acknowledge-message doc:name="AMQP-0-9 Acknowledge Message"/>
    <catch-exception-strategy doc:name="Catch Exception Strategy">
        <logger message="SMTP Error, Requeuing" level="INFO" doc:name="Logger"/>
        <amqp:reject-message requeue="true" doc:name="AMQP-0-9 Reject Message"/>
    </catch-exception-strategy>

当我的SMTP连接器引发异常时,异常策略正确启动,但随后AMQP引发错误,如下所示:

INFO  2015-06-18 16:32:22,383 [HTTP_Listener_AMIAB.worker.01] org.mule.transport.service.DefaultTransportServiceDescriptor: Loading default outbound transformer: org.mule.transport.amqp.internal.transformer.ObjectToAmqpMessage
INFO  2015-06-18 16:32:22,383 [HTTP_Listener_AMIAB.worker.01] org.mule.transport.service.DefaultTransportServiceDescriptor: Loading default response transformer: org.mule.transport.amqp.internal.transformer.ObjectToAmqpMessage
INFO  2015-06-18 16:32:22,387 [HTTP_Listener_AMIAB.worker.01] org.mule.lifecycle.AbstractLifecycleManager: Initialising: 'connector.amqp.mule.default.dispatcher.936721322'. Object is: Dispatcher
INFO  2015-06-18 16:32:22,389 [HTTP_Listener_AMIAB.worker.01] org.mule.lifecycle.AbstractLifecycleManager: Starting: 'connector.amqp.mule.default.dispatcher.936721322'. Object is: Dispatcher
INFO  2015-06-18 16:32:22,446 [[amiab-esb-utility].utility-smtpFlow.stage1.02] org.mule.api.processor.LoggerMessageProcessor: Recevied SMTP Message from Queue
INFO  2015-06-18 16:32:22,457 [[amiab-esb-utility].smtpConnector.dispatcher.01] org.mule.transport.service.DefaultTransportServiceDescriptor: Loading default outbound transformer: org.mule.transport.email.transformers.ObjectToMimeMessage
INFO  2015-06-18 16:32:22,481 [[amiab-esb-utility].smtpConnector.dispatcher.01] org.mule.lifecycle.AbstractLifecycleManager: Initialising: 'smtpConnector.dispatcher.404056326'. Object is: SmtpMessageDispatcher
ERROR 2015-06-18 16:32:22,568 [[amiab-esb-utility].smtpConnector.dispatcher.01] org.mule.exception.CatchMessagingExceptionStrategy: 
********************************************************************************
Message               : Unable to connect to mail transport.
Code                  : MULE_ERROR--2
--------------------------------------------------------------------------------
Exception stack is:
1. mail.lyrical.co.uk (java.net.UnknownHostException)
  java.net.AbstractPlainSocketImpl:178 (null)
2. Unknown SMTP host: mail.lyrical.co.uk (javax.mail.MessagingException)
  com.sun.mail.smtp.SMTPTransport:1704 (http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/mail/MessagingException.html)
3. Unable to connect to mail transport. (org.mule.api.endpoint.EndpointException)
  org.mule.transport.email.SmtpMessageDispatcher:67 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/endpoint/EndpointException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
java.net.UnknownHostException: mail.lyrical.co.uk
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************

INFO  2015-06-17 15:25:47,190 [[amiab-esb-utility].smtpConnector.dispatcher.01] org.mule.api.processor.LoggerMessageProcessor: SMTP Error, Requeuing
WARN  2015-06-17 15:25:47,193 [amqpReceiver.01] org.mule.transport.amqp.internal.endpoint.receiver.MessageReceiverConsumer: Received shutdown signal for consumer tag: amq.ctag-NZ96mnj_oscnpJKAPy16ng, the message receiver will try to restart.
com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - unknown delivery tag 1, class-id=60, method-id=90)
    at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:478) ~[?:?]
    at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:315) ~[?:?]
    at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:144) ~[?:?]
    at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:91) ~[?:?]
    at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:550) ~[?:?]
    at java.lang.Thread.run(Thread.java:745) [?:1.7.0_75]
INFO  2015-06-17 15:25:47,195 [amqpReceiver.01] org.mule.lifecycle.AbstractLifecycleManager: Stopping: 'null'. Object is: MultiChannelMessageSubReceiver
INFO  2015-06-17 15:25:47,195 [amqpReceiver.01] org.mule.transport.amqp.internal.endpoint.receiver.MultiChannelMessageSubReceiver: Connecting clusterizable message receiver
INFO  2015-06-17 15:25:47,195 [amqpReceiver.01] org.mule.lifecycle.AbstractLifecycleManager: Starting: 'null'. Object is: MultiChannelMessageSubReceiver
INFO  2015-06-17 15:25:47,196 [amqpReceiver.01] org.mule.transport.amqp.internal.endpoint.receiver.MultiChannelMessageSubReceiver: Starting clusterizable message receiver
INFO  2015-06-17 15:25:47,203 [amqpReceiver.01] org.mule.transport.amqp.internal.endpoint.receiver.MultiChannelMessageSubReceiver: Started subscription: amq.ctag-sCCRCnOWKyREyip26pSYDA on channel: AMQChannel(amqp://guest@127.0.0.1:5672/,3)
INFO 2015-06-18 16:32:22383[HTTP_Listener_AMIAB.worker.01]org.mule.transport.service.DefaultTransportServiceDescriptor:加载默认出站转换器:org.mule.transport.amqp.internal.transformer.ObjectToAmqpMessage
INFO 2015-06-18 16:32:22383[HTTP_Listener_AMIAB.worker.01]org.mule.transport.service.DefaultTransportServiceDescriptor:加载默认响应转换器:org.mule.transport.amqp.internal.transformer.ObjectToAmqpMessage
INFO 2015-06-18 16:32:22387[HTTP_Listener_AMIAB.worker.01]org.mule.lifecycle.AbstractLifecycleManager:初始化:“connector.amqp.mule.default.dispatcher.936721322”。对象是:dispatcher
INFO 2015-06-18 16:32:22389[HTTP_Listener_AMIAB.worker.01]org.mule.lifecycle.AbstractLifecycleManager:开始:“connector.amqp.mule.default.dispatcher.936721322”。对象是:dispatcher
INFO 2015-06-18 16:32:22446[[amiab esb实用程序].实用程序smtpFlow.stage1.02]org.mule.api.processor.LoggerMessageProcessor:从队列接收SMTP消息
INFO 2015-06-18 16:32:22457[[amiab esb实用程序].smtpConnector.dispatcher.01]org.mule.transport.service.DefaultTransportServiceDescriptor:加载默认出站转换器:org.mule.transport.email.transformers.ObjectToMimeMessage
INFO 2015-06-18 16:32:22481[[amiab esb实用程序].smtpConnector.dispatcher.01]org.mule.lifecycle.AbstractLifecycleManager:初始化:“smtpConnector.dispatcher.404056326”。对象是:SmtpMessageDispatcher
错误2015-06-18 16:32:22568[[amiab esb实用程序].smtpConnector.dispatcher.01]org.mule.exception.CatchMessaginExceptionStrategy:
********************************************************************************
消息:无法连接到邮件传输。
代码:MULE_错误--2
--------------------------------------------------------------------------------
异常堆栈是:
1.mail.lyrical.co.uk(java.net.UnknownHostException)
java.net.AbstractPlainSocketImpl:178(空)
2.未知SMTP主机:mail.lyrical.co.uk(javax.mail.MessaginException)
SMTPTransport:1704(http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/mail/MessagingException.html)
3.无法连接到邮件传输。(org.mule.api.endpoint.EndpointException)
org.mule.transport.email.SmtpMessageDispatcher:67(http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/endpoint/EndpointException.html)
--------------------------------------------------------------------------------
根异常堆栈跟踪:
java.net.UnknownHostException:mail.lyrical.co.uk
位于java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
位于java.net.socksocketimpl.connect(socksocketimpl.java:392)
+3个以上(为所有内容设置调试级别日志或“-Dmule.verbose.exceptions=true”)
********************************************************************************
INFO 2015-06-17 15:25:47190[[amiab esb实用程序].smtpConnector.dispatcher.01]org.mule.api.processor.LoggerMessageProcessor:SMTP错误,重新查询
WARN 2015-06-17 15:25:47193[amqpceiver.01]org.mule.transport.amqp.internal.endpoint.receiver.MessageReceiver消费者:收到消费者标签的关闭信号:amq.ctag-NZ96mnj_oscnpJKAPy16ng,消息接收器将尝试重新启动。
com.rabbitmq.client.ShutdownSignalException:通道错误;协议方法:#方法(回复代码=406,回复文本=前提条件_失败-未知传递标记1,类id=60,方法id=90)
在com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:478)~[?:?]
在com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:315)~[?:?]
在com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:144)~[?:?]
在com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:91)~[?:?]
在com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:550)~[?:?]
在java.lang.Thread.run(Thread.java:745)[?:1.7.0_75]
INFO 2015-06-17 15:25:47195[amqpceiver.01]org.mule.lifecycle.AbstractLifecycleManager:正在停止:“null”。对象是:MultiChannelMessageSubReceiver
INFO 2015-06-17 15:25:47195[amqpceiver.01]org.mule.transport.amqp.internal.endpoint.receiver.MultiChannelMessageSubReceiver:连接群集化消息接收器
INFO 2015-06-17 15:25:47195[amqpceiver.01]org.mule.lifecycle.AbstractLifecycleManager:开始:“null”。对象是:MultiChannelMessageSubReceiver
INFO 2015-06-17 15:25:47196[amqpceiver.01]org.mule.transport.amqp.internal.endpoint.receiver.MultiChannelMessageSubReceiver:正在启动群集化消息接收器
信息2015-06-17 15:25:47203[amqpceiver.01]org.mule.transport.amqp.internal.endpoint.receiver.MultiChannelMessageSubReceiver:已开始订阅:amq.ctag-sCCRCnOWKyREyip26pSYDA on channel:AMQChannel(amqp://guest@127.0.0.1:5672/,3)

我是否错过了一些明显的东西,或者我误解了应该如何使用它?如果有人能为我指出正确的方向,我将非常感激。

正如您在评论中所指出的,
smtp:outbound endpoint
是一个
单向
端点,它的调度操作