我們使用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
}
...但是這顯然不是要走的路。目前,一切都(在測試過程中尤其是)寫入到存儲庫在那裏停留。