C# 无法使自身主机在NServiceBus上工作
使用版本2.0.0.1219 我正在尝试使用NServiceBus和VS2010自托管订阅服务器和发布服务器。程序运行并初始化,但我无法获取要移动的消息。发布者的行为就像发布一样,没有错误,但订阅者什么也没有收到 这是订阅服务器配置C# 无法使自身主机在NServiceBus上工作,c#,.net,nservicebus,servicebus,C#,.net,Nservicebus,Servicebus,使用版本2.0.0.1219 我正在尝试使用NServiceBus和VS2010自托管订阅服务器和发布服务器。程序运行并初始化,但我无法获取要移动的消息。发布者的行为就像发布一样,没有错误,但订阅者什么也没有收到 这是订阅服务器配置 <?xml version="1.0"?> <configuration> <configSections> <section name="MsmqTransportConfig" type="NServiceB
<?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: "queue@machine"
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>
以及用户代码
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();
}
}
和消息代码
public class LoadMessageHandler : IHandleMessages<LoadMessage>
{
public void Handle(LoadMessage message)
{
Console.WriteLine(String.Format("GUID: {0}", message.EventId));
}
}
公共类LoadMessageHandler:IHandleMessages
{
公共无效句柄(LoadMessage)
{
WriteLine(String.Format(“GUID:{0}”,message.EventId));
}
}
您似乎对两个端点使用了相同的输入队列,请将您的订阅服务器移动到它自己的队列中,看看是否有效
另外,不需要为订阅服务器配置订阅存储,因为由发布服务器负责存储订阅信息
希望这有帮助 更多问题:
1:必须将msmq传输配置为事务传输,发布服务器才能接受订阅消息。有关配置这些的示例,请参见
2:Publisher正在使用XmLSerializer,而subscriber正在使用BinarySerializer,这使它们不兼容。需要更完整的代码,包括名称空间和目标DLL,才能确定此问题的原因。NServiceMessage in是指定义LoadMessage类型的dll。谢谢,就是这样做的,这是我出错的后半部分。
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();
}
}
public class LoadMessageHandler : IHandleMessages<LoadMessage>
{
public void Handle(LoadMessage message)
{
Console.WriteLine(String.Format("GUID: {0}", message.EventId));
}
}