메시지 대기열에 메시지를 저장하기 위해 nServivceBus를 사용하고 있습니다. 나는 runmefirst를 달렸다. 박쥐. 메시지 큐 서비스가 성공적으로 설치되었습니다. 웹 애플리케이션을 실행할 때 개인 대기열이 성공적으로 작성됩니다.nServiceBus가 MessageQueue에 지속되지 않습니다.
메시지를 보내면 메시지 큐에 표시되지 않습니다. 오류가 발생하지 않습니다. 나는 혼란 스럽다.
설정
Configure config = Configure.WithWeb();
config
.StructureMapBuilder(Container)
.MsmqSubscriptionStorage()
.MsmqTransport()
.IsTransactional(true)
.PurgeOnStartup(false)
.XmlSerializer()
.UnicastBus()
.ImpersonateSender(false)
.CreateBus()
.Start();
구성
<configuration>
<configSections>
<section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core"/>
<section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core"/>
<section name="MsmqSubscriptionStorageConfig" type="NServiceBus.Config.MsmqSubscriptionStorageConfig, NServiceBus.Core" />
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<MsmqSubscriptionStorageConfig Queue="subscribe" />
<MsmqTransportConfig InputQueue="subscribe" ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5"/>
<UnicastBusConfig>
<MessageEndpointMappings>
<add Messages="Momntz" Endpoint="subscribe"/>
</MessageEndpointMappings>
</UnicastBusConfig>
코드
private readonly IDocumentDatabase _database;
private readonly IBus _bus;
/// <summary>
/// Initializes a new instance of the <see cref="HomeIndexCommandHandler"/> class.
/// </summary>
/// <param name="database">The database.</param>
/// <param name="bus"></param>
public CreateUserCommandHandler(IDatabases database, IBus bus)
{
_database = database.RavenDb;
_bus = bus;
}
/// <summary>
/// Executes the specified command.
/// </summary>
/// <param name="command">The command.</param>
public void Execute(CreateUserCommand command)
{
var user = Mapper.DynamicMap<CreateUserCommand, User>(command);
user.AccountStatus = UserAccountStatus.Active;
var foundUser = CheckForDuplicateUsername(user);
if(foundUser != null)
{
throw new DuplicateUsernameException(string.Format("Username '{0}' already exists.", user.Username));
}
_database.Add(user);
var denormalizeMessage = Mapper.DynamicMap<User, UserDenormalizeMessage>(user);
_bus.Send(denormalizeMessage);
}
업데이트
의도는 웹 사이트가 메시지를 처리하기 위해 메시지 대기열과 서비스로 메시지를 보내는 것입니다. 매우 간단합니다. 클라이언트와 서버 간의 응답이나 통신을 찾고 있지 않습니다. 그것은 일방 통행입니다.
"메시지 대기열에 메시지를 저장하기 위해 nServivceBus를 사용합니다."*라고 약간 혼란스러워합니다. MSMQ 대기열에 메시지를 저장하는 것은 최종 게임이 아닌 전송 수준 세부 정보입니다. 유용하게 쓰일 수있는 것은 당신이 실제로 달성하고자하는 것을 우리에게 말하면됩니다. –