2016-09-01 14 views
0

Redis(Windows 7にインストール済み)用のStackExchange.Redis .NETクライアントを使用しています。 ホスト名 - 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は、DBが空であることを示します。 Redisので

は、コマンドのpubsubチャネル表示次の結果をCLI、そのチャネルが存在することを意味する:

  1. "タスク"
  2. また

"__Booksleeve_MasterChanged"、私はDBに文字列をプッシュしそれは成功しました:

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

アイデアや提案はありますか?

+0

パブリッシュではデータベースに何も設定されていません。キースペース通知を有効にしない限り、dbとpub/subspaceはほとんど区別されます。購読している井戸を出版社より先に開始してもよろしいですか?発行者が登録者の登録前にデータを送信している場合、以前の値は通知されません(redis pub/subは初期イメージなしの更新のみ)。 –

答えて

0

usingステートメントの最後にクライアントをブロックしない限り、サブスクライバの接続は破棄されます。したがって、クライアントはusingステートメントの後にpubsubメッセージを受信しません。

関連する問題