ServiceStack Re-usability ユース ケース プロジェクトのソリューションを使用しています。
このソリューションに、以下のコードを含む新しいコンソール アプリを追加しました。
元の再利用性ユースケース プロジェクトでは、EmailMessage が公開されると、電子メールを送信したサブスクライバーによって処理されました (つまり、SMessageService.Any(EmailMessage request))。
コンソール アプリを実行すると、つまり、EmailMessage にサブスクライブしている 2 つのアプリケーションがあることを意味しますが、新しいコンソール アプリだけがメッセージを受信します。
私は次のものを持っています:
私のコンソールアプリは次のとおりです。
class Program
{
static void Main(string[] args)
{
var subscriberHost = new SubscriberHost();
subscriberHost.Init();
Console.WriteLine("Waiting of publishing
to happen on EmailMessage as we are subscribing to it...");
Console.ReadLine();
}
}
public class SubscriberHost : AppHostHttpListenerBase
{
private RedisMqServer mqHost;
public SubscriberHost()
:base("Subscriber console",typeof(EmailMessageEventHandler).Assembly)
{
}
public override void Configure(Container container)
{
var redisFactory = new PooledRedisClientManager("localhost:6379");
mqHost = new RedisMqServer(redisFactory, retryCount:2);
mqHost.RegisterHandler<EmailMessage>((message) =>
{
var emailMessage = message.GetBody();
Console.WriteLine(emailMessage.To);
Console.WriteLine(emailMessage.Subject);
Console.WriteLine(emailMessage.Body);
return new SMessageReceipt {
Type = "not used",
To = "test",
From = "Reusability",
RefId = "1,"
};
});
// mqHost.RegisterHandler<EmailMessage>(ServiceController.ExecuteMessage);
mqHost.Start();
}
}
両方のサブスクライバーが EmailMessage を受信することを期待していましたが、新しいコンソール アプリだけが受信しています。他のサブスクライバーがメッセージを受信しないのはなぜですか?
パブリッシュを行うクライアント コードは変更されていません。