我们使用spring-boot-starter-parent
1.4.1以及spring-boot-starter-redis
和spring-boot-starter-data-redis
。我们使用(一)传递给外部应用程序和(b)存储在库中的一些信息消息Redis的。我们Redis的配置看起来像这样Spring Data Redis - 存储库中的@Transactional支持
@Configuration
@EnableRedisRepositories
open class RedisConfig {
@Bean // for message passing
@Profile("test")
open fun testRedisChannelProvider(): RedisParserChannelProvider {
return RedisParserChannelProvider("test_parser:parse.job", "test_parser:parse.joblist")
}
@Bean // for message passing
@Profile("!test")
open fun productionRedisChannelProvider(): RedisParserChannelProvider {
return RedisParserChannelProvider("parser:parse.job", "parser:parse.joblist")
}
@Bean // for message passing
open fun parseJobTemplate(connectionFactory: RedisConnectionFactory): RedisTemplate<String, ParseJob> {
val template = RedisTemplate<String, ParseJob>()
template.connectionFactory = connectionFactory
template.valueSerializer = Jackson2JsonRedisSerializer<ParseJob>(ParseJob::class.java)
return template
}
//@Bean // for message passing
//open fun parseJobListTemplate ...
// no template for repository
有了这个配置的消息传递很好地工作,以及写入/读取版本库。现在我试图让@Transactional
与库通讯的工作,但我至今没有成功。我已经遵循了docs就可以了例如配置和手动启用事务支持:
@Bean
open fun redisTemplate(): RedisTemplate<*, *> {
val template = RedisTemplate<ByteArray, ByteArray>()
template.setEnableTransactionSupport(true)
return template
}
...但是这显然不是要走的路。目前,一切都(在测试过程中尤其是)写入到存储库在那里停留。