2012-02-22 4 views
2

내 응용 프로그램에 (log4net을 사용하여) 로깅을 추가 한 후에는 더 이상 구독 메시지를 올바르게 처리하지 못하고 오류 대기열에 저장됩니다. 아래에서 무고한 사람을 보호하기 위해 일부 네임 스페이스 이름이 변경되었습니다.NServiceBus 등록 메시지를 처리 ​​할 때 오류가 발생했습니다.

namespace myNamespace.BRDispatcher 
{ 
    /// <summary> 
    /// Interface tells NServiceBus which roles to setup for this class. 
    /// </summary> 
    public class BRDEndpointConfig : IConfigureThisEndpoint, IWantCustomInitialization 
    { 
     #region Class References -1- 
     /// <summary> 
     /// Reference to Logger object. 
     /// </summary> 
     private static readonly ILog Logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 
     #endregion 
    public void Init() 
    { 
     NServiceBus.SetLoggingLibrary.Log4Net(log4net.Config.XmlConfigurator.Configure); 

     Logger.Info("BankRequestDispatcher - Init()"); 

     NServiceBus.Configure.With() 
      //.Log4Net() 
      .DefaultBuilder() 
      .XmlSerializer() 
      .MsmqSubscriptionStorage() 
      .MsmqTransport() 
      .IsTransactional(true) 
      .PurgeOnStartup(false) 
      .UnicastBus() 
      .ImpersonateSender(false) 
      .LoadMessageHandlers() 
      .CreateBus() 
      .Start(); 

     Logger.Info("BankRequestDispatcher - Init() Complete"); 
    } 
} 
} 

가 최대 화재,받은 가입 메시지가 오류에 싣는다 :

은의 app.config는

<?xml version="1.0"?> 
<configuration> 
<configSections> 
    <section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" /> 
    <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" /> 
    <section name="MsmqSubscriptionStorageConfig" type="NServiceBus.Config.MsmqSubscriptionStorageConfig, NServiceBus.Core" /> 
    <section name="Logging" type="NServiceBus.Config.Logging, NServiceBus.Core" /> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
</configSections> 

<Logging Threshold="INFO" /> 

<log4net> 
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> 
     <layout type="log4net.Layout.PatternLayout"> 
      <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt; - %m%n"/> 
     </layout> 
    </appender> 
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" > 
     <layout type="log4net.Layout.PatternLayout"> 
      <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt; - %m%n"/> 
     </layout> 
    </appender> 
    <appender name="TraceAppender" type="log4net.Appender.TraceAppender"> 
     <layout type="log4net.Layout.PatternLayout"> 
      <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] &lt;%X{auth}&gt; - %m%n"/> 
     </layout> 
    </appender> 
    <appender name="FileAppender" type="log4net.Appender.FileAppender"> 
     <file value="logfile.txt" /> 
     <appendToFile value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
     </layout> 
    </appender> 
    <root> 
     <level value="INFO"/> 
     <appender-ref ref="ConsoleAppender"/> 
     <appender-ref ref="FileAppender"/> 
    </root> 
</log4net> 

<MsmqTransportConfig 
    InputQueue="BankRequestDispatcherInputQueue_DEV2" 
    ErrorQueue="error" 
    NumberOfWorkerThreads="1" 
    MaxRetries="5" 
/> 

<UnicastBusConfig ForwardReceivedMessagesTo="auditqueue"> 
    <MessageEndpointMappings> 
     <add Messages="<assembly>.BankRequestBatchClosed,<assembly>" Endpoint="ScheduledBatchAgentInputQueue_DEV2" /> 
    </MessageEndpointMappings> 
</UnicastBusConfig> 

<MsmqSubscriptionStorageConfig Queue="BRDispatcher_DEV2_subscriptions" /> 

<!-- Neccessary for Fluent/NHibernate/SQLLite dlls --> 
<startup useLegacyV2RuntimeActivationPolicy="true"> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
</startup> 
<appSettings> 
    <add key="TempRequestFileLocation" value="c:\temp\"/> 
    <add key="KeepRequestFiles" value="true"/> 
    <add key="Environment" value="TEST"/> 
</appSettings> 
</configuration> 

나는이에 엔드 포인트 설정을 변경했습니다 대기열에서 로그에 표시됩니다.

2012-02-22 17:02:48,013 [Worker.8] ERROR NServiceBus.Unicast.Transport.Msmq.MsmqTransport [(null)] - Message has failed the maximum number of times allowed, ID=94b95c71-896f-4991-b3ba-9d2068a68c63\81504. 

답변

0

오류/문제의 원인을 발견했습니다. 메시지 전달 대기열이 app.config (ForwardReceivedMessagesTo)에 지정되어 있지만 대기열이 호스트 시스템에 존재하지 않으면 동일한 오류가 발생합니다.

의 app.config

<UnicastBusConfig ForwardReceivedMessagesTo="auditqueue"> 
<MessageEndpointMappings> 
    <add Messages="<assembly>.BankRequestBatchClosed,<assembly>" Endpoint="ScheduledBatchAgentInputQueue_DEV2" /> 
</MessageEndpointMappings> 

문제는 여섯에서와 같은 하나의 프로세스 만 발생했다 I했습니다 테스트 환경에서 누락 된 큐 이름 실행 얻었다. 다섯 개는 'auditqueue'로 설정되었고 한 개는 'auditqueue_test2'였습니다.이 카운터는 존재하지 않았고이 인스턴스에서 대기열을 자동 생성하지 않으며 DEBUG 문에서 아무 것도 발언하지 않습니다. 문제.

'auditqueue_test2'라는 새로운 트랜잭션 대기열을 만들었으며 현재 실행 중입니다. 로깅을 다시 추가하고 작동하는지 확인하겠습니다.

1

이것은 RC4의 버그로 인한 것입니다.
RC5로 시도해보고 문제가 해결되는지 확인하십시오.

+0

버전 2.6을 사용하고 있음을 잊지 못했습니다. NSB 3.0으로의 업그레이드가 어려울까요? – Fellmeister

+0

또한 로깅은 내 dev 컴퓨터의 디버그에서 제대로 작동하지만 NServiceBus.Host.Exe를 사용하여 서비스로 실행될 때 dll의 릴리스 버전이 테스트 컴퓨터에서이 문제가 발생합니다. – Fellmeister

+0

매우 쉬워야하지만 변경) –

관련 문제