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>