2010-03-18 4 views
0

Dans un projet de test basé sur le pub/sous-échantillon nServiceBus, j'ai remplacé bus.publish par bus.send dans le serveur. Le serveur envoie 50 messages avec une attente de 1 seconde après chaque 5 (soit 10 paquets de 5 messages). Le client ne reçoit pas tous les messages.nServiceBus - Toutes les commandes ne sont pas reçues par le gestionnaire

Le projet dispose de 3 projets - Serveur, Client et messages communs. Le serveur et le client sont hébergés via l'hôte générique nServiceBus. Un seul bus est défini.

Le client et le serveur sont configurés pour utiliser StructureMap Builder et BinarySerialization.

serveur Endpoint:

public class EndPointConfig : AsA_Publisher, IConfigureThisEndpoint, IWantCustomInitialization 
{ 
    public void Init() 
    { 
     NServiceBus.Configure.With() 
      .StructureMapBuilder() 
      .BinarySerializer(); 
    } 
} 

Code Serveur:

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); 
} 

Endpoint Client:

public class EndPointConfig : AsA_Client, IConfigureThisEndpoint, IWantCustomInitialization 
{ 
    public void Init() 
    { 
     NServiceBus.Configure.With() 
      .StructureMapBuilder() 
      .BinarySerializer(); 
    } 
} 

client 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); 
    } 
} 

Client et Serveur App.Config:

<MsmqTransportConfig InputQueue="nsbt02a" ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5" /> 
<UnicastBusConfig DistributorControlAddress="" DistributorDataAddress=""> 
    <MessageEndpointMappings> 
     <add Messages="Test02.Messages" Endpoint="nsbt02a" /> 
    </MessageEndpointMappings> 
</UnicastBusConfig> 

Tous fonctionnent via VisualStudio 2008.

sont envoyés tous les 50 messages - mais après la 1ère ou 2ème lot. seulement 1 msg par lot est envoyé?

Des idées? Je suppose que config ou abus, mais ....?

Répondre

1

Votre problème principal est que vous avez configuré les deux processus pour utiliser la même file d'attente d'entrée. Donnez à chacun sa propre file d'attente.

Questions connexes