0

我们已经在 J​​boss SOA 平台上部署了应用程序。从性能上看,我们已经注释掉了 jboss-esb.xml 中的 DeadLetterService。因此,当任何异常发生或消息未传递给第 3 方时,它不应该转到 DLQ。但是现在我们收到以下错误

********************************
2012-12-18 18:02:30,996 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/ServiceName].[HttpGateway]] (http-0.0.0.0-9032-14) Servlet.service() for servlet HttpGateway threw exception
org.jboss.soa.esb.listeners.message.MissingServiceException: Registry details for service [JBossESB-Internal:DeadLetterService] could not be determined from the registry.
        at org.jboss.soa.esb.client.ServiceInvoker.post(ServiceInvoker.java:348)
********************************

将响应发送给第 3 方大约需要 5 分钟。我们正在尝试找出延迟的原因。

谁能知道这个问题与“DeadLetterService”有什么关系?或者我怎样才能重现这个问题?或者为什么要延迟 5 分钟?

4

1 回答 1

0

我不确定出于性能原因关闭 DeadLetterService 是什么意思,但由于对该服务的调用在 ServiceInvoker 中是硬编码的,因此完全删除该服务并不是一个好主意。

您可以通过属性关闭它的使用,无论是全局还是每条消息。

DeadLetterService 默认打开,但是在 jbossesb-properties.xml 中,您可以将 org.jboss.soa.esb.dls.redeliver 设置为 false 以关闭它的使用。如果你想在每条消息的基础上控制它,那么在特定的消息属性中相应地设置 org.jboss.soa.esb.dls.redeliver 属性。Message 属性将优先于任何全局设置使用。默认是使用配置文件中设置的值。

https://access.redhat.com/knowledge/docs/en-US/JBoss_Enterprise_SOA_Platform/5/html/ESB_Programmers_Guide/chap-SOA_ESB_Programmers_Guide-Advanced_Topics.html#idp105205​​76

于 2013-01-12T06:46:37.577 回答