ASP.NET MVC3에서 NServiceBus를 테스트하고 있습니다. 지금은 백엔드에 명령 메시지를 보낼 수 있으며 메시지 처리기는 메시지를 듣고 있습니다. 그러나 동일한 메시지를 게시하려고하면 메시지 처리기가 수신 대기하지 않습니다.구독자가 게시자의 메시지를 처리 할 수 없습니다.
내가 발견 한 문제는 메시지가 가입자의 대기열에 게시되지 않는다는 것입니다. 내가 디버깅 및 NServiceBusHost 콘솔을 검사 할 때, 내가 몇 일 동안 또 다시 내 구성 설정을 확인하고 나를 위해 올바른 것
2012-01-19 22:53:35,042 [1] INFO NServiceBus.Unicast.UnicastBus [(null)] <(null
)> - Subscribing to SampleMessage.Person1WasCreated, SampleMessage, Version=1.0.
0.0, Culture=neutral, PublicKeyToken=null at publisher queue Test-web
말한다. 누구나 내가 뭘 놓치고 있는지 확인해 줄 수 있니? 내가하려는 일은 웹에서 메시지를 게시하고 메시지가 백엔드 (ServiceHost2)에서 처리되어야합니다.
namespace ServiceHost2
{
public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, IWantCustomInitialization
{
public void Init()
{
Configure.With()
.Log4Net()
.CastleWindsorBuilder()
.MsmqTransport()
.MsmqSubscriptionStorage()
.XmlSerializer()
.UnicastBus().LoadMessageHandlers()
;
}
}
}
ServiceHost2
에 대한
ASP.NET MVC3의 Web.config
<configSections>
<section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" />
<section name="MsmqSubscriptionStorageConfig" type="NServiceBus.Config.MsmqSubscriptionStorageConfig, NServiceBus.Core" />
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core"/>
</configSections>
<MsmqTransportConfig InputQueue="Test-web" ErrorQueue="Test-web-error" NumberOfWorkerThreads="1" MaxRetries="5" />
<MsmqSubscriptionStorageConfig Queue="Test-subscriptionstorage" />
Global.asax.cs
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
Global.Bus = Configure.WithWeb()
.Log4Net()
.CastleWindsorBuilder()
.XmlSerializer()
.MsmqTransport().IsTransactional(false)
.UnicastBus()
.LoadMessageHandlers()
.MsmqSubscriptionStorage()
.CreateBus()
.Start()
;
}
의 app.config ServiceHost2에서 프로젝트
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" />
<section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" />
<section name="MsmqSubscriptionStorageConfig" type="NServiceBus.Config.MsmqSubscriptionStorageConfig, NServiceBus.Core" />
</configSections>
<MsmqSubscriptionStorageConfig Queue="Service2-AC1-subscriptionstorage" />
<MsmqTransportConfig InputQueue="Service2-AC1" ErrorQueue="Service2-AC1-Error" NumberOfWorkerThreads="1" MaxRetries="5" />
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="SampleMessage" Endpoint="Test-web" />
</MessageEndpointMappings>
</UnicastBusConfig>
<appSettings>
<add key="EndpointConfigurationType" value="ServiceHost2.EndpointConfig, ServiceHost2"/>
</appSettings>
</configuration>
EndpointConfig메시지를
public ActionResult CreatePerson(Person p)
{
var Person1WasCreated = new Person1WasCreated {Id = p.Id,Name = p.Name};
Global.Bus.Publish(Person1WasCreated);
return View();
}
덕분에 게시 컨트롤러 16,
방법.
분명히 잘못된 것을 볼 수 없으며 로그 출력이 실제로 이벤트에 가입하고있는 것처럼 보입니다 ... 게시하지 않았습니까? 구독 대기열에 구독이 있는지 확인하십시오. – JimmyP
다시 두 번 확인했는데 거기에 없습니다. 내가 메시지를 구독했지만 가입 저장 장치 "Service2-AC1-subscriptionstorage"에 값이 없다고 말합니다. 아주 이상한. FYI, NServiceBus 2.6을 사용하는 메신저 – kekewong
구독자는 게시자 측 (웹 사이트)에 저장됩니다. Test-subscrptionstorage queue를 확인하십시오. –