Мы используем spring-boot-starter-parent
1.4.1 вместе с spring-boot-starter-redis
и spring-boot-starter-data-redis
. Мы используем redis для (a) сообщения, передающего внешнее приложение, и (b) для хранения некоторой информации в репозитории. Наш 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
}
... но это, по-видимому, не путь. В настоящее время все, записанное в репозиторий (в частности, во время тестов), остается там.