Usando la versione 2.0.0.1219non possono ottenere auto dell'host su cui lavorare NServiceBus
Sto tentando di ospite sé sia un abbonato ed editore con NServiceBus e VS2010. I programmi vengono eseguiti e inizializzati ma non riesco a spostare i messaggi. L'editore agisce come se stesse pubblicando, senza errori, ma l'utente non riceve nulla.
Qui è il config abbonato
<?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>
E l'editore 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"/>
</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>
ecco il codice editore:
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;
}
}
E il codice abbonato
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();
}
}
E il messaggio in codice
public class LoadMessageHandler : IHandleMessages<LoadMessage>
{
public void Handle(LoadMessage message)
{
Console.WriteLine(String.Format("GUID: {0}", message.EventId));
}
}
È necessario un codice più completo, inclusi spazi dei nomi e dll di destinazione, per determinare la causa di questo problema. NServiceMessage in si riferisce alla dll in cui è definito il tipo LoadMessage. –
Cirdec