redis和mq异步写说明文档.md
2.34 KB
Redis
YHValueOperations.set(), YHValueOperations.multiSet(), YHRedisTemplate.mset()改成异步写, 首先写入jvm queue,然后异步请求redis。 同时新增提供一个同步请求的set方法 syncSet(),syncMultiSet(),syncMset 如果想走同步s可以调用这些方法。
调用期间可能出现队列满了,或者超时(默认2s),会丢弃,打印相应的日志,级别是error,想要进行配置. \ 下面是对应的logger : \
private final Logger logger = LoggerFactory.getLogger(AsynRedisTemplate.class);
配置开关
- 全局开关:在global.properties里配置
yoho.core.redis.async.enable
默认值为true (异步写), 配置为false为同步写 - 单个bean开关:默认为true(异步写), 配置为false为同步写, 具体配置范例为:
<bean id="yhNoSyncValueOperations" class="com.yoho.core.redis.YHValueOperations" primary="true" p:valueOperations-ref="yhNoSyncRedisTemplate" p:valueOperationsReadOnly-ref="yhNoSyncRedisTemplate" p:redisCacheClean-ref="redisCacheClean" p:asyncEnable="false"/>
也可以这样配置<bean id="yhNoSyncValueOperationsMine" parent="yhNoSyncValueOperations"> <property name="asyncEnable" value="false"/> </bean>
Mq
YhProducerTemplate.send()方法改成异步发送消息,首先写入jvm queue,然后异步请求mq
调用期间可能出现队列满了,或者超时(默认2s),会丢弃,打印相应的日志,级别是error,需要进行配置。\ 下面是对应的logger:\
private final Logger asynclogger = LoggerFactory.getLogger("asyncproducer");
\ 日志会打印出丢弃的消息全部信息,包括请求体json字符串
配置开关
- 全局开关:在global.properties里配置 yoho.core.redis.async.enable 默认值为true (异步写), 配置为false为同步写
- 单个bean开关:默认为true(异步写), 配置为false为同步写, 具体配置范例为:
<!--发送消息 --> <bean id="producerTemplateMine" class="com.yoho.core.message.YhProducerTemplate" primary="true"> <property name="amqpTemplate" ref="amqpTemplate"/> <property name="asyncEnable" value="false"/> </bean>
也可以这样配置<bean id="producerTemplateMine" parent="producerTemplate"> <property name="asyncEnable" value="false"/> </bean>