我已经找到了实现这一目标的方法。如果有更优雅的方式来实现这一点,请告诉我。在此处添加以供希望实现相同目标的任何人参考
var redisConnection = "localhost:6379";
var a = new Test() {
Id = Guid.NewGuid()
};
var b = new Test() {
Id = Guid.NewGuid()
};
var redisFactory = new PooledRedisClientManager(redisConnection);
var mqHost = new RedisMqServer(redisFactory, retryCount: 5);
mqHost.RegisterHandler<TestA>(model =>
{
Test d = model.Body as Test;
Debug.Assert(a.Id == d.Id);
return "A";
});
mqHost.RegisterHandler<TestB>(model =>
{
Test d = model.Body as Test;
Debug.Assert(b.Id == d.Id);
return "B";
});
mqHost.Start();
var client = mqHost.CreateMessageQueueClient();
var data = MessageFactory.Create(a);
client.Publish($"mq:{typeof(Test).Name}A.inq", data );
var dataB = MessageFactory.Create(a);
client.Publish($"mq:{typeof(Test).Name}B.inq", data);
while (true) { }
...
public class TestA : Test { }
public class TestB : Test { }
public class Test {
public Guid Id { get; set; }
}