Redis購読リリースJedis実現方法
Redisを使った購読発表モードは、押し付け問題を解決するためのものだと思います。
概念的な叙述については、多かれ少なかれ言及します。
Redisが購読しているのは何ですか?Redisが購読するのはメッセージ通信モードであり、送信者はチャネルAを介してメッセージメッセージメッセージメッセージメッセージメッセージを送信し、チャネルAを購読したクライアントはメッセージメッセージメッセージメッセージメッセージメッセージメッセージメッセージメッセージメッセージメッセージを受信することができる。えっと、上の説明は私が言ったよりずっとよくなりました。つまり、私が理解しているのは、いわゆる購読発表モードというのは、実は私たちがテレビを見たり、ラジオを聞いたりするのと同じです。私たちがチャンネルを変えたりしていない時にも、そのチャンネルはニュースを伝えています。私たちはそのチャンネルに換えればメッセージを受信することができます。はい、ちょっと不適切かもしれませんが。
説明
本明細書では例示的に三つのクライアントが採用され、「品」の字形で並べられ、上から下まで左から右にそれぞれクライアント1(c 1)、クライアント2(c 2)、クライアント3(c 3)である。ここで説明する。
Redis購読とコマンドの発行
まず、Redisサーバの構築作業について、自ら関連資料を見て環境整備を行ってください。
Redisではリリースと購読は簡単な6つのコマンドしかないと聞きました。すなわち、
PSUBSCRIBE pattern[pattern...]
一つ以上のチャンネルを購読してください。
PUBLISHちゃんねるメッセージ
chanelに発表します。
PUBSUB subcommand[argment[argment...]
購読とリリースシステムの状態を表示します。
PUNSUBSCRIBE[pattern...]
フォーマットに合ったチャンネルを全部キャンセルします。
SUBSCRIBE chanel[chanel...]
1つ以上のチャンネルを購読します。
UNSUBSCRIBE[chanel[chanel...]
チャンネルの購読をキャンセルします
例1-SUBSCRIBE
redisを接続してコマンドを入力します。
これからstudyチャンネルでメッセージを送ります。~~
例2-PUBLISH
もう一つのクライアントを開きます。私が使っているのは品番レイアウトの一番上の方のものです。
例3-PSUBSCRIBE
今、ブロガーの左手に沿って、右手がゆっくりと動きます。c 3に入力する
c 3はワイルドカード形式で、studyチャンネルも購読に成功しました。
次に、c 1にコマンドを入力し続けます。
例4-PUBSUB
c 1にpbsub chanelを入力すると、次のようになります。
Jedisは購読者モードを実現します。
はい、上のコマンドラインを通じてRedisの中で購読発表者モードに関するコマンドを熟知しました。私たちはredisの購読と発表者をプロジェクトに埋め込みます。
まず、私たちはjedisを使ってまず「study」というチャンネルを予約します。
まずコマンドラインからメッセージを発表します。
その後、私たちはジェームズを使ってプロジェクトでメッセージを発表します。
正常な通信ができます。
コアコード:
PublishMessage.javaはメッセージを発表するスレッドを開くために使用されます。
概念的な叙述については、多かれ少なかれ言及します。
Redisが購読しているのは何ですか?Redisが購読するのはメッセージ通信モードであり、送信者はチャネルAを介してメッセージメッセージメッセージメッセージメッセージメッセージを送信し、チャネルAを購読したクライアントはメッセージメッセージメッセージメッセージメッセージメッセージメッセージメッセージメッセージメッセージメッセージを受信することができる。えっと、上の説明は私が言ったよりずっとよくなりました。つまり、私が理解しているのは、いわゆる購読発表モードというのは、実は私たちがテレビを見たり、ラジオを聞いたりするのと同じです。私たちがチャンネルを変えたりしていない時にも、そのチャンネルはニュースを伝えています。私たちはそのチャンネルに換えればメッセージを受信することができます。はい、ちょっと不適切かもしれませんが。
説明
本明細書では例示的に三つのクライアントが採用され、「品」の字形で並べられ、上から下まで左から右にそれぞれクライアント1(c 1)、クライアント2(c 2)、クライアント3(c 3)である。ここで説明する。
Redis購読とコマンドの発行
まず、Redisサーバの構築作業について、自ら関連資料を見て環境整備を行ってください。
Redisではリリースと購読は簡単な6つのコマンドしかないと聞きました。すなわち、
PSUBSCRIBE pattern[pattern...]
一つ以上のチャンネルを購読してください。
PUBLISHちゃんねるメッセージ
chanelに発表します。
PUBSUB subcommand[argment[argment...]
購読とリリースシステムの状態を表示します。
PUNSUBSCRIBE[pattern...]
フォーマットに合ったチャンネルを全部キャンセルします。
SUBSCRIBE chanel[chanel...]
1つ以上のチャンネルを購読します。
UNSUBSCRIBE[chanel[chanel...]
チャンネルの購読をキャンセルします
例1-SUBSCRIBE
redisを接続してコマンドを入力します。
SUBSCRIBE study
これでstudyというチャンネルを購読しました。これからstudyチャンネルでメッセージを送ります。~~
例2-PUBLISH
もう一つのクライアントを開きます。私が使っているのは品番レイアウトの一番上の方のものです。
PUBLISH study "message1-go go go"
クライアント1がstudyチャンネルでメッセージを発行すると、クライアント2(購読済みstudyチャンネル)は、c 1が発行したメッセージを受信することができ、クライアント3は、studyチャンネルを購読していないため、c 1が送信したメッセージを受信できないことが分かる。例3-PSUBSCRIBE
今、ブロガーの左手に沿って、右手がゆっくりと動きます。c 3に入力する
PSUBSCRIBE study*
OKです。今はc 1に入力します。
PUBLISH study "message2"
上の結果図:c 3はワイルドカード形式で、studyチャンネルも購読に成功しました。
次に、c 1にコマンドを入力し続けます。
PUBLISH study:java "I hate java forever"
pspubscribeを使ってstudyチャンネルを購読しただけでなく、studyをはじめとするチャンネルも購読したと見られます。例4-PUBSUB
c 1にpbsub chanelを入力すると、次のようになります。
127.0.0.1:6379> PUBSUB channels
1) "study"
現在活躍しているチャンネルを意味します。Jedisは購読者モードを実現します。
はい、上のコマンドラインを通じてRedisの中で購読発表者モードに関するコマンドを熟知しました。私たちはredisの購読と発表者をプロジェクトに埋め込みます。
まず、私たちはjedisを使ってまず「study」というチャンネルを予約します。
まずコマンドラインからメッセージを発表します。
その後、私たちはジェームズを使ってプロジェクトでメッセージを発表します。
正常な通信ができます。
コアコード:
PublishMessage.javaはメッセージを発表するスレッドを開くために使用されます。
private Logger logger = LoggerFactory.getLogger(PublishMessage.class);
@Resource
private JedisCluster jedisCluster;
/**
*
*
* @param channel
* @param message
*/
public void sendMessage(final String channel, final String message) {
Thread thread = new Thread(() -> {
Long publish = jedisCluster.publish(channel, message);
logger.info(" : {} {} - {}", channel, message, publish);
});
logger.info(" :");
thread.setName("publishThread");
thread.start();
}
ChtSubscribe.javaは購読関連イベントを処理します。JedisPbSubから継承します。
private Logger logger = LoggerFactory.getLogger(ChatSubscribe.class);
//
@Override
public void onMessage(String channel, String message) {
logger.info(" , : -{}, -{}", channel, message);
RedisString.message = message;
}
//
@Override
public void onPMessage(String pattern, String channel, String message) {
System.out.println("----- -----");
System.out.println(pattern + "=" + channel + "=" + message);
}
//
@Override
public void onPSubscribe(String pattern, int subscribedChannels) {
System.out.println("----- -----");
System.out.println(pattern + "=" + subscribedChannels);
}
//
@Override
public void onPUnsubscribe(String pattern, int subscribedChannels) {
System.out.println("----- -----");
System.out.println(pattern + "=" + subscribedChannels);
}
@Override
public void onPong(String pattern) {
super.onPong(pattern);
}
//
@Override
public void onSubscribe(String channel, int subscribedChannels) {
logger.info(" : -{}, -{}", channel, subscribedChannels);
}
//
@Override
public void onUnsubscribe(String channel, int subscribedChannels) {
logger.info(" {}", channel);
}
SubScribeMessage.javaはチャンネルを購読して、チャンネルなどの動作種類をキャンセルします。
private Logger logger = LoggerFactory.getLogger(SubScribeMessage.class);
private ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
@Resource
private JedisCluster jedisCluster;
/**
*
*
* @param channel
* @param roomSubListerner
*/
public void subscribeChannel(final String channel, final ChatSubscribe roomSubListerner) {
cachedThreadPool.execute(new Runnable() {
@Override
public void run() {
jedisCluster.subscribe(roomSubListerner, channel);
}
});
}
jedisCluster , , , , 。
tomcat 9.0 + spring + springmvc
:@RestController,@GetMapping , , spring 。
以上のこのRedisは購読して発表します。Jedisの実現方法は小編が皆さんに提供した内容を全部共有しました。参考にしていただければと思います。よろしくお願いします。