tags:

views:

45

answers:

2

When we use System.Messaging to send a message remotely, it work correctly i.e. I can see the message on the queue in the remore machine.

However when we attempt to perform the same task i.e. send a message remotely using NServiceBus, the message does not appear in the remote queue, it seems the message disappears

Note, we have the following configuration in the clients app.config file:

<UnicastBusConfig>
 <MessageEndpointMappings>
  <add Messages="CCSMessage.ITaskCompleted, CCSMessage" Endpoint="[email protected]" />
 </MessageEndpointMappings>
</UnicastBusConfig>

We bootstrap the client using the following fluent configuration:

Configure.With()
 .CastleWindsorBuilder(_container)
 .XmlSerializer()
 .MsmqTransport()
  .IsTransactional(true)
  .PurgeOnStartup(false)
 .UnicastBus()
  .ImpersonateSender(false)
 .CreateBus()
 .Start();

Is there anything that we are obviously doing incorrectly?

A: 

I don't know, does store & forward happen implicitly when sending to remote queues (to protect against the remote queue not being up and running)?

Yves Reynhout
Yes, the underlying MSMQ infrastructure takes care of this given the queues are transactional.
Adam Fyles
+1  A: 

Given that the client and server are on different machines, you should see the message in the internal outbound queue of the client(if they are on the same machine you will not). The message will be held there until it can be delivered to the server. Make sure the Distributed Transaction Coordinator is running on both machines. Also make sure that the InputQueue in the app.config of the server matches. Also make sure the the server NSB queue is local and transactional.

Adam Fyles