nServiceBus pub/sub 샘플을 기반으로하는 테스트 프로젝트에서 서버의 bus.send로 bus.publish를 대체했습니다. 서버는 각 5 (즉, 5 개의 메시지 중 10 개의 버스트) 이후에 1 초 대기와 함께 50 개의 메시지를 보냅니다. 클라이언트가 모든 메시지를받지는 못합니다.nServiceBus - 처리기가 수신하는 모든 명령이 없음
soln에는 3 개의 프로젝트 (서버, 클라이언트 및 공통 메시지)가 있습니다. 서버와 클라이언트는 nServiceBus 제네릭 호스트를 통해 호스팅됩니다. 단 하나의 버스 만 정의됩니다.
클라이언트와 서버 모두 StructureMap 빌더와 BinarySerialisation을 사용하도록 구성됩니다.
서버 엔드 포인트 :
public class EndPointConfig : AsA_Publisher, IConfigureThisEndpoint, IWantCustomInitialization
{
public void Init()
{
NServiceBus.Configure.With()
.StructureMapBuilder()
.BinarySerializer();
}
}
서버 코드 :
for (var nextId = 1; nextId <= 50; nextId++)
{
Console.WriteLine("Sending {0}", nextId);
IDataMsg msg = new DataMsg { Id = nextId, Body = string.Format("Batch Msg #{0}", nextId) };
_bus.SendLocal(msg);
Console.WriteLine(" ...sent {0}", nextId);
if ((nextId % 5) == 0)
Thread.Sleep(1000);
}
클라이언트 엔드 포인트 :
public class EndPointConfig : AsA_Client, IConfigureThisEndpoint, IWantCustomInitialization
{
public void Init()
{
NServiceBus.Configure.With()
.StructureMapBuilder()
.BinarySerializer();
}
}
클라이언트 Clode (으) :
public class DataMsgHandler : IMessageHandler<IDataMsg>
{
public void Handle(IDataMsg msg)
{
Console.WriteLine("DataMsgHandler.Handle({0}, {1}) - ({2})", msg.Id, msg.Body, Thread.CurrentThread.ManagedThreadId);
}
}
,
클라이언트 및 서버의 app.config는 :
<MsmqTransportConfig InputQueue="nsbt02a" ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5" />
<UnicastBusConfig DistributorControlAddress="" DistributorDataAddress="">
<MessageEndpointMappings>
<add Messages="Test02.Messages" Endpoint="nsbt02a" />
</MessageEndpointMappings>
</UnicastBusConfig>
모든으로 VisualStudio 2008 년 50 개 메시지가 전송됩니다
를 통해 실행 - 그러나 1 차 또는 2 차 배치 후. 일괄 처리 당 1 개의 메시지 만 전송됩니까?
아이디어가 있으십니까? 나는 설정이나 오용을 가정하지만 ....?