2016-09-01 71 views
0

我使用Redis的StackExchange.Redis .NET客戶端(安裝在Windows 7上)。 主機名 - 127.0.0.1,端口 - 6379Redis Pub/Sub不發佈消息

認購人:

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 Deskto P Manager顯示數據庫爲空。

在redis的CLI的命令發佈訂閱CHANNELS顯示下一個結果,這意味着,信道存在:

  1. 「任務」
  2. 「__Booksleeve_MasterChanged」

另外,我推字符串DB和它是成功的:

var db = connection.GetDatabase(); 
db.StringSet("key","message"); 

任何想法或建議?

+0

發佈沒有在數據庫中設置任何東西 - 它是預期的(除非啓用密鑰空間通知,否則db和pub/sub空間大多是不同的)。你確定你是在發佈商之前開始你的訂閱嗎?如果發佈者在訂閱者註冊之前發送數據,您將不會收到有關以前值的通知(redis pub/sub是僅更新的,沒有初始圖像)。 –

回答

0

您的訂戶的連接將被處置,除非您在使用聲明結束時阻止您的客戶。因此,在使用聲明之後,您的客戶端將不會收到任何pubsub消息。