implemeneted redis support
This commit is contained in:
4
.idea/compiler.xml
generated
4
.idea/compiler.xml
generated
@@ -6,11 +6,11 @@
|
|||||||
<sourceOutputDir name="target/generated-sources/annotations" />
|
<sourceOutputDir name="target/generated-sources/annotations" />
|
||||||
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
|
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
|
||||||
<outputRelativeToContentRoot value="true" />
|
<outputRelativeToContentRoot value="true" />
|
||||||
<module name="decode-web-service" />
|
<module name="decode-service" />
|
||||||
</profile>
|
</profile>
|
||||||
</annotationProcessing>
|
</annotationProcessing>
|
||||||
<bytecodeTargetLevel>
|
<bytecodeTargetLevel>
|
||||||
<module name="decode-web-service" target="1.8" />
|
<module name="decode-service" target="1.8" />
|
||||||
</bytecodeTargetLevel>
|
</bytecodeTargetLevel>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
2
.idea/modules.xml
generated
2
.idea/modules.xml
generated
@@ -2,7 +2,7 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ProjectModuleManager">
|
<component name="ProjectModuleManager">
|
||||||
<modules>
|
<modules>
|
||||||
<module fileurl="file://$PROJECT_DIR$/decode-web-service.iml" filepath="$PROJECT_DIR$/decode-web-service.iml" />
|
<module fileurl="file://$PROJECT_DIR$/decode-service.iml" filepath="$PROJECT_DIR$/decode-service.iml" />
|
||||||
</modules>
|
</modules>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
1
.idea/vcs.xml
generated
1
.idea/vcs.xml
generated
@@ -1,7 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="VcsDirectoryMappings">
|
<component name="VcsDirectoryMappings">
|
||||||
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
|
|
||||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
||||||
65
src/main/java/net/irext/decoder/RedisConfig.java
Normal file
65
src/main/java/net/irext/decoder/RedisConfig.java
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
package net.irext.decoder;
|
||||||
|
|
||||||
|
import net.irext.decoder.queue.MessagePublisher;
|
||||||
|
import net.irext.decoder.queue.MessagePublisherImpl;
|
||||||
|
import net.irext.decoder.queue.MessageSubscriber;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
|
||||||
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
|
import org.springframework.data.redis.listener.ChannelTopic;
|
||||||
|
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
|
||||||
|
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;
|
||||||
|
import org.springframework.data.redis.serializer.GenericToStringSerializer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filename: RedisConfig.java
|
||||||
|
* Revised: Date: 2018-12-29
|
||||||
|
* Revision: Revision: 1.0
|
||||||
|
* <p>
|
||||||
|
* Description: Redis config class
|
||||||
|
* <p>
|
||||||
|
* Revision log:
|
||||||
|
* 2018-12-29: created by strawmanbobi
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
@ComponentScan("net.irext")
|
||||||
|
public class RedisConfig {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
JedisConnectionFactory jedisConnectionFactory() {
|
||||||
|
return new JedisConnectionFactory();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public RedisTemplate<String, Object> redisTemplate() {
|
||||||
|
final RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
|
||||||
|
template.setConnectionFactory(jedisConnectionFactory());
|
||||||
|
template.setValueSerializer(new GenericToStringSerializer<Object>(Object.class));
|
||||||
|
return template;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
MessageListenerAdapter messageListener() {
|
||||||
|
return new MessageListenerAdapter(new MessageSubscriber());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
RedisMessageListenerContainer redisContainer() {
|
||||||
|
final RedisMessageListenerContainer container = new RedisMessageListenerContainer();
|
||||||
|
container.setConnectionFactory(jedisConnectionFactory());
|
||||||
|
container.addMessageListener(messageListener(), topic());
|
||||||
|
return container;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
MessagePublisher redisPublisher() {
|
||||||
|
return new MessagePublisherImpl(redisTemplate(), topic());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
ChannelTopic topic() {
|
||||||
|
return new ChannelTopic("pubsub:queue");
|
||||||
|
}
|
||||||
|
}
|
||||||
42
src/main/java/net/irext/decoder/model/DecodeSession.java
Normal file
42
src/main/java/net/irext/decoder/model/DecodeSession.java
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
package net.irext.decoder.model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filename: DecodeSession.java
|
||||||
|
* Revised: Date: 2018-12-29
|
||||||
|
* Revision: Revision: 1.0
|
||||||
|
* <p>
|
||||||
|
* Description: Decode session for decoding within connection
|
||||||
|
* <p>
|
||||||
|
* Revision log:
|
||||||
|
* 2018-12-29: created by strawmanbobi
|
||||||
|
*/
|
||||||
|
public class DecodeSession {
|
||||||
|
|
||||||
|
private Integer id;
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
public DecodeSession(Integer id, String name) {
|
||||||
|
this.id = id;
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DecodeSession() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Integer id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
}
|
||||||
17
src/main/java/net/irext/decoder/queue/MessagePublisher.java
Normal file
17
src/main/java/net/irext/decoder/queue/MessagePublisher.java
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package net.irext.decoder.queue;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filename: MessagePublisher.java
|
||||||
|
* Revised: Date: 2018-12-29
|
||||||
|
* Revision: Revision: 1.0
|
||||||
|
* <p>
|
||||||
|
* Description: Message publisher for redis connection
|
||||||
|
* <p>
|
||||||
|
* Revision log:
|
||||||
|
* 2018-12-29: created by strawmanbobi
|
||||||
|
*/
|
||||||
|
public interface MessagePublisher {
|
||||||
|
|
||||||
|
void publish(final String message);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package net.irext.decoder.queue;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
|
import org.springframework.data.redis.listener.ChannelTopic;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filename: MessagePublisherImpl.java
|
||||||
|
* Revised: Date: 2018-12-29
|
||||||
|
* Revision: Revision: 1.0
|
||||||
|
* <p>
|
||||||
|
* Description: Message publisher for redis connection
|
||||||
|
* <p>
|
||||||
|
* Revision log:
|
||||||
|
* 2018-12-29: created by strawmanbobi
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class MessagePublisherImpl implements MessagePublisher {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RedisTemplate<String, Object> redisTemplate;
|
||||||
|
@Autowired
|
||||||
|
private ChannelTopic topic;
|
||||||
|
|
||||||
|
public MessagePublisherImpl() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public MessagePublisherImpl(final RedisTemplate<String, Object> redisTemplate, final ChannelTopic topic) {
|
||||||
|
this.redisTemplate = redisTemplate;
|
||||||
|
this.topic = topic;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void publish(final String message) {
|
||||||
|
redisTemplate.convertAndSend(topic.getTopic(), message);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
30
src/main/java/net/irext/decoder/queue/MessageSubscriber.java
Normal file
30
src/main/java/net/irext/decoder/queue/MessageSubscriber.java
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
package net.irext.decoder.queue;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.springframework.data.redis.connection.Message;
|
||||||
|
import org.springframework.data.redis.connection.MessageListener;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filename: MessageSubscriber.java
|
||||||
|
* Revised: Date: 2018-12-29
|
||||||
|
* Revision: Revision: 1.0
|
||||||
|
* <p>
|
||||||
|
* Description: Message subscriber for redis connection
|
||||||
|
* <p>
|
||||||
|
* Revision log:
|
||||||
|
* 2018-12-29: created by strawmanbobi
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class MessageSubscriber implements MessageListener {
|
||||||
|
|
||||||
|
public static List<String> messageList = new ArrayList<String>();
|
||||||
|
|
||||||
|
public void onMessage(final Message message, final byte[] pattern) {
|
||||||
|
messageList.add(message.toString());
|
||||||
|
System.out.println("Message received: " + new String(message.getBody()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package net.irext.decoder.redisrepo;
|
||||||
|
|
||||||
|
import net.irext.decoder.model.DecodeSession;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filename: RedisRepository.java
|
||||||
|
* Revised: Date: 2018-12-29
|
||||||
|
* Revision: Revision: 1.0
|
||||||
|
* <p>
|
||||||
|
* Description: Redis cache class
|
||||||
|
* <p>
|
||||||
|
* Revision log:
|
||||||
|
* 2018-12-29: created by strawmanbobi
|
||||||
|
*/
|
||||||
|
public interface RedisRepository {
|
||||||
|
|
||||||
|
Map<Object, Object> findAllDecodeSessions();
|
||||||
|
|
||||||
|
void add(DecodeSession decodeSession);
|
||||||
|
|
||||||
|
void delete(Integer id);
|
||||||
|
|
||||||
|
DecodeSession find(Integer id);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
package net.irext.decoder.redisrepo;
|
||||||
|
|
||||||
|
import net.irext.decoder.model.DecodeSession;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.data.redis.core.HashOperations;
|
||||||
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import javax.annotation.PostConstruct;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filename: RedisRepositoryImpl.java
|
||||||
|
* Revised: Date: 2018-12-29
|
||||||
|
* Revision: Revision: 1.0
|
||||||
|
* <p>
|
||||||
|
* Description: Redis cache class
|
||||||
|
* <p>
|
||||||
|
* Revision log:
|
||||||
|
* 2018-12-29: created by strawmanbobi
|
||||||
|
*/
|
||||||
|
@Repository
|
||||||
|
public class RedisRepositoryImpl implements RedisRepository {
|
||||||
|
private static final String KEY = "SESSION_KEY";
|
||||||
|
|
||||||
|
private RedisTemplate<String, Object> redisTemplate;
|
||||||
|
private HashOperations hashOperations;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public RedisRepositoryImpl(RedisTemplate<String, Object> redisTemplate){
|
||||||
|
this.redisTemplate = redisTemplate;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostConstruct
|
||||||
|
private void init(){
|
||||||
|
hashOperations = redisTemplate.opsForHash();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void add(final DecodeSession decodeSession) {
|
||||||
|
hashOperations.put(KEY, decodeSession.getId(), decodeSession.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void delete(final Integer id) {
|
||||||
|
hashOperations.delete(KEY, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DecodeSession find(final Integer id){
|
||||||
|
return (DecodeSession) hashOperations.get(KEY, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<Object, Object> findAllDecodeSessions(){
|
||||||
|
return hashOperations.entries(KEY);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
server.port=8082
|
server.port=8082
|
||||||
|
|
||||||
|
spring.cache.type=redis
|
||||||
spring.redis.host=localhost
|
spring.redis.host=localhost
|
||||||
spring.redis.port=6379
|
spring.redis.port=6379
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user