我正在使用RedEx的StackExchange.Redis .NET客户端(安装在Windows 7上)。 主机名 - 127.0.0.1,端口 - 6379
订阅者:
using (var connection = ConnectionMultiplexer.Connect(string.Format("{0}:{1},abortConnect=false,ConnectTimeout=10000", m_HostName, m_Port)))
{
var sub = connection.GetSubscriber();
sub.Subscribe("tasks", (channel, value) =>
{
// processing
});
}
发布者:
using (var connection = ConnectionMultiplexer.Connect(string.Format("{0}:{1},abortConnect=false,ConnectTimeout=10000", m_HostName, m_Port)))
{
var subscriber = connection.GetSubscriber();
Logger.Debug(subscriber.IsConnected().ToString());
subscriber.Publish("tasks", message);
}
在日志中,我可以看到订户已连接,此行没有例外:
subscriber.Publish("tasks", message);
但订阅者没有收到任何消息,Redis Desktop Manager显示数据库为空。
在redis cli中,命令PUBSUB CHANNELS显示下一个结果,表示该通道存在:
另外,我将字符串推送到DB并且成功了:
var db = connection.GetDatabase();
db.StringSet("key","message");
有任何想法或建议吗?
答案 0 :(得分:0)
除非您在使用声明结束时阻止您的客户,否则您的订户的连接将被处理。因此,您的客户在使用声明后不会收到任何pubsub消息。