輸入net.sf.json.JSONObject; 輸入org.apache.tomcat.jni.Time; 輸入org.springframework.beans.factory.annotation.Autowired; 輸入org.springframework.data.redis.core.RedisTemplate; 輸入org.springframework.jms.annotation.JmsListener; 輸入org.springframework.jms.core.JmsMessagingTemplate; 輸入org.springframework.stereotype.Controller; 輸入org.springframework.web.bind.annotation.RequestBody。 輸入org.springframework.web.bind.annotation.RequestMapping。 輸入org.springframework.web.bind.annotation.ResponseBody。 インポートのjavax.jms.Queue; 輸入javax.servlet.http.HttpSession。 インポートにjava.io.IOException; 輸入java.util.Date; 輸入java.util.HashMapを; 輸入java.util.Map; / ** * @author DDD * @Create 2020年3月20日午後8時41分 * * / @コントローラ パブリック クラスtestcontroller { @Autowired プライベートJmsMessagingTemplate jmsMessagingTemplate。 @Autowired キューキュー; @Autowired RedisTemplate RedisTemplate; //はKVに使用するために設計された // 横ピークActiveMQの使用と、 / * 状況が完了したメッセージ・キュー・プロセスであるため、結果を得るために、クライアントを取得する方法が、問題の原因となりました *メッセージ・キューの処理を経て上記メッセージ、結合IDは、Redisのリクエストメソッドの開始を判断するために設定された値を与える場合、 *しかし、多くの問題、遅い場合の処理があり、値がされていないセットは、実行する方法のRedis * *拡張の問題は、ActiveMQの崩壊メッセージが行う方法、復元方法、ActiveMQのは、最大同時接続プールは、どのくらいの接続は何ができますです * *缶のRedisのデータ、参照メッセージ・キュー処理の複数 * * / @RequestMapping( "/ ActiveMQの" ) @ResponseBody 公共活性文字列()スローInterruptedExceptionあるが{ 日付日付 = 新しい日付(); メッセージ文字列 = String.valueOf(日付); // シミュレーション日付データとしてここで使用される、実際のデータはJSON MSG内に配置することができる // データ動作が解析されたMSGことができる読み出すときにデータ jmsMessagingTemplate.convertAndSend(キューMSG)、 IF(.. Integer.parseInt(redisTemplate.opsForValue()GET( "アクション")のtoString())== 1 ){ 戻り "大成功" 。 } 他に{ リターン「エラー」; } } @JmsListener(宛先 = "$ {MY_QUEUE}" ) 公共 無効revice(){ int型 NUM = Integer.parseInt(redisTemplate.opsForValue()を取得( "人"。).toString());- ; System.out.println(NUM + +1 ); IF(NUM> 0 ){ // 実際のデータは、アトミック操作で処理することができるRedisの redisTemplate.opsForValue()SET( "人" 、NUM)を、 redisTemplate.opsForValue()セット( "アクション"、1 )。 } 他の{ redisTemplate.opsForValue()セット(。 "アクション"、0 ); } } @JmsListener(宛先 = "$ {MY_QUEUE}" ) 公共 無効revice2(){ int型 NUM = Integer.parseInt(redisTemplate.opsForValue()を取得( "人"。).toString());- ; System.out.println(NUM + +1 ); IF(NUM> 0 ){ // 実際のデータは、アトミック操作で処理することができるRedisの redisTemplate.opsForValue()SET( "人" 、NUM)を、 redisTemplate.opsForValue()セット( "アクション"、1 )。 } 他の{ redisTemplate.opsForValue()セット(。 "アクション"、0 ); } } @JmsListener(宛先 = "$ {MY_QUEUE}" ) 公共 無効revice3(){ int型 NUM = Integer.parseInt(redisTemplate.opsForValue()を取得( "人"。).toString());- ; System.out.println(NUM + +1 ); IF(NUM> 0 ){ // 実際のデータは、アトミック操作で処理することができるRedisの redisTemplate.opsForValue()SET( "人" 、NUM)を、 redisTemplate.opsForValue()セット( "アクション"、1 )。 } 他の{ redisTemplate.opsForValue()セット(。 "アクション"、0 ); } } // アナログ熱いのRedisに入れたデータ、 @RequestMapping( "/ Redisの" ) @ResponseBody パブリック文字列のRedis(){ redisTemplate.opsForValue()セット(。 "アクション"、0 ); redisTemplate.opsForValue()セット(。 "人"、1000年); 。redisTemplate.opsForValue()セット( "名前"、 "丁丁丁" ); System.out.println( "redisTemplate.opsForValue()=" + redisTemplate.opsForValue()( "アクション"を得ます。)); System.out.println( "redisTemplate.opsForValue()=" + redisTemplate.opsForValue()( "人"を得ます。)); System.out.println( "redisTemplate.opsForValue()=" + redisTemplate.opsForValue()( "name"を取得します。)); 戻る「成功」。 }
//私はそのような方法スパイクシリーズで沈降したいのですが、先生は、メッセージキューのほとんどの場合に得られた結果は、フィードバックの使用にはあまり必要で尋ねた
は良い解決策はありません見ていきます//後 }