En utilisant la version 2.0.0.1219Impossible d'obtenir l'auto hôte pour travailler sur NServiceBus
Je cherche à la fois auto hôte un abonné et éditeur avec NServiceBus et VS2010. Les programmes s'exécutent et s'initialisent mais je n'arrive pas à faire passer les messages. L'éditeur agit comme s'il publiait, sans erreurs, mais l'abonné ne reçoit rien.
Voici la configuration abonné
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core"/>
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core"/>
</configSections>
<!-- in order to configure remote endpoints use the format: "[email protected]"
input queue must be on the same machine as the process feeding off of it.
error queue can (and often should) be on a different machine.
-->
<MsmqTransportConfig InputQueue="loads" ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5"/>
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="NServiceMessage" Endpoint="loads"/>
</MessageEndpointMappings>
</UnicastBusConfig>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
Et la configuration de l'éditeur
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core"/>
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core"/>
</configSections>
<MsmqTransportConfig InputQueue="loads" ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5"/>
<UnicastBusConfig DistributorControlAddress="" DistributorDataAddress="" ForwardReceivedMessagesTo="">
<MessageEndpointMappings>
<!-- publishers don't need to set this for their own message types -->
<!--<add Messages="Messages" Endpoint="messagebus" />-->
</MessageEndpointMappings>
</UnicastBusConfig>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
Voici le code d'éditeur:
class Program
{
private static IBus _serviceBus;
static void Main(string[] args)
{
_serviceBus = Configure.With()
.Log4Net()
.DefaultBuilder()
.XmlSerializer()
.MsmqSubscriptionStorage()
.MsmqTransport()
.UnicastBus()
.LoadMessageHandlers()
.CreateBus()
.Start();
while (true)
{
Console.WriteLine("Press a key to send data.");
Console.ReadKey();
SendMessaage();
}
}
private static void SendMessaage()
{
LoadMessage message = GetNextMessage();
_serviceBus.Publish(message);
}
private static LoadMessage GetNextMessage()
{
LoadMessage result = new LoadMessage();
result.DeliveryDate = DateTime.Today.AddDays(3).ToShortDateString();
result.DestinationCity = "Boise";
result.DestinationCountry = "USA";
result.DestinationState = "ID";
result.EventId = Guid.NewGuid();
result.Time = DateTime.Now.ToUniversalTime();
result.OriginState = "OR";
result.OriginCity = "Portland";
result.OriginCountry = "USA";
result.EquipmentID = 3;
return result;
}
}
Et le code d'abonné
class Program
{
private static IBus _serviceBus;
private static LoadMessageHandler _messageHandler;
static void Main(string[] args)
{
_messageHandler = new LoadMessageHandler();
_serviceBus = Configure
.With()
.Log4Net()
.DefaultBuilder()
.BinarySerializer()
.MsmqSubscriptionStorage()
.MsmqTransport()
.UnicastBus()
.LoadMessageHandlers()
.CreateBus()
.Start();
Console.ReadKey();
}
}
Et le code message de
public class LoadMessageHandler : IHandleMessages<LoadMessage>
{
public void Handle(LoadMessage message)
{
Console.WriteLine(String.Format("GUID: {0}", message.EventId));
}
}
Un code plus complet, comprenant des espaces de noms et des DLLs, est requis pour déterminer la cause de ce problème. NServiceMessage dans fait référence à la DLL où le type LoadMessage est défini. –
Cirdec