2011-02-10 5 views
0

게시자 설정 게시자 메시지에 도달하지 가입자

<!-- 1. In order to configure remote endpoints use the format: "[email protected]" 
     2. Input queue must be on the same machine as the process feeding off of it. 
     3. Error queue can (and often should) be on a different machine. 
     4. The community edition doesn't support more than one worker thread. 
    --> 

    <MsmqTransportConfig 
    InputQueue="HomeOfficePublisherQueue" 
    ErrorQueue="error" 
    NumberOfWorkerThreads="1" 
    MaxRetries="5" 
    UseJournalQueue="true" 
    /> 

    <DBSubscriptionStorageConfig> 
    <NHibernateProperties> 
     <add Key="connection.provider" 
      Value="NHibernate.Connection.DriverConnectionProvider"/> 
     <add Key="connection.driver_class" 
      Value="NHibernate.Driver.SqlClientDriver"/> 
     <add Key="connection.connection_string" 
      Value="Server=<dbserver>\corpdev;initial catalog=NServiceBus;Integrated Security=SSPI"/> 
     <add Key="dialect" 
      Value="NHibernate.Dialect.MsSql2005Dialect"/> 
    </NHibernateProperties> 
    </DBSubscriptionStorageConfig> 

    <UnicastBusConfig 
    DistributorControlAddress="" 
    DistributorDataAddress="" 
    ForwardReceivedMessagesTo=""> 
    <MessageEndpointMappings> 
    </MessageEndpointMappings> 
    </UnicastBusConfig> 


</configuration> 

가입자 설정 내가 diffrent 기계에서 술집 서브를 실행하면

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" /> 
    <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" /> 
    </configSections> 

    <!-- 1. In order to configure remote endpoints use the format: "[email protected]" 
     2. Input queue must be on the same machine as the process feeding off of it. 
     3. Error queue can (and often should) be on a different machine. 
     4. The community edition doesn't support more than one worker thread. 
    --> 

    <MsmqTransportConfig 
    InputQueue="[email protected]<subscriberServer>" 
    ErrorQueue="error" 
    NumberOfWorkerThreads="1" 
    MaxRetries="5" 
    UseJournalQueue="true" 
    /> 

    <UnicastBusConfig> 
    <MessageEndpointMappings> 
     <add Messages="Message" Endpoint="[email protected]<publisherServer>" /> 
    </MessageEndpointMappings> 
    </UnicastBusConfig> 

</configuration> 

, 출판사에서 메시지하지 않습니다 도달 가입자. 같은 컴퓨터에서 실행하면 정상적으로 작동합니다.

=> 게시자가이 컴퓨터에서 실행되고 게시자 큐가 로컬로 만들어집니다.

=> 가입자가 실행중인 컴퓨터와 동일합니다.

프로필은 프로덕션이며 로그 파일에는 예외가 없습니다.

메시지가 삭제되는 모든 단서. 도움 요청 ...

+0

일부 태그가 잘못되어 서버를 "=> 게시자가이 컴퓨터에서 실행 중이고 게시자 큐가 로컬로 생성되었습니다. 과 같습니다. => 구독자가 실행중인 컴퓨터입니다. – singhsa

답변

0

게시자의 내부 발신 대기열을 확인하십시오. 메시지가 표시되면 구독자와 통신 할 수 없다는 의미입니다. 이것은 일반적으로 MSDTC가 실행 중이 아니거나 MSDTC의 보안이 올바르게 구성되지 않았을 수 있음을 의미합니다. MSDTC 보안 설정에서 "인바운드 허용"및 "아웃 바운드 허용"이 설정되어 있는지 확인하십시오.

+0

그냥 발행인에 내부 아웃 바운드 대기열이 게시자가 시작될 때 저널 큐에 초기 메시지가 표시 될 수 있지만 이후 메시지는 표시되지 않습니다. MSDTC를 확인 했으므로 올바르게 구성되었습니다. – singhsa

+0

게시자의 인바운드 큐에서 저널링을 사용하면 구독자의 구독 메시지 만 도착했음을 알 수 있습니다.MSMQ의 아웃 바운드 내부 큐 (mmc의 "보내는 큐")를 확인해야합니다. 게시자와 구독자 모두의 운영 체제는 무엇입니까? –

0

내 작업을 할 때 누군가에게 마우스를 고정시키고 싶었습니다.

나를 위해, 문제는 내가 평범한 poco 클래스를 내 메시지로 보내려고한다는 것이 었습니다.
내가 객체가 있어야하는데 무엇을 말할 필요가 어쩌면 생각, 그래서

Configure.With() 
.DefiningMessagesAs(t => t.Namespace != null && t.Namespace.Contains("Messages")); 
이 가

여전히 작동하지 않은 메시지로 메시지를 구성한 다음

<UnicastBusConfig ForwardReceivedMessagesTo="audit"> 
    <MessageEndpointMappings> 
     <add Assembly="Messages" Endpoint="pub" /> 
    </MessageEndpointMappings> 
    </UnicastBusConfig> 

의 app.config 때문에, 다음 싱긋 웃음을 위해 내가이

Configure.With() 
.DefiningEventsAs(t => t.Namespace != null && t.Namespace.Contains("Messages")); 

에 변화가 지금은 잘 작동

관련 문제