26 Matching Annotations
  1. Aug 2022
    1. 每次消息过来都要拿着订单号+业务场景这样的唯一标识(比如天猫双十一活动)去流水表查,看看有没有这条流水,有就直接return不要走下面的流程了,没有就执行后面的逻辑。

      如果有事务,则可能不适用。可以用mysql唯一索引

    1. JAVA18中强制使用UTF-8编码(1-4字节变长编码,中文字符都在三字节区),原先两字节的char能显示GBK编码(两字节定长编码)的汉字,但现在不行了,望教程更新(Char的演示里有中文字符“中”)。

      Java对待文件或者外部字节的字符编码是utf-8了,但内部数据的处理依旧是utf-16

    1. 其实MySQL是确认了的。只是在这个语句里面,MySQL认为读出来的值,只有一个确定的 (id=1), 而要写的是(a=3),只从这两个信息是看不出来“不需要修改”的
    1. @Component(Service 也是一种 Component)将当前类自动注入到 Spring 容器时,shutdown 方法则不会被自动执行
    1. 恢复目标时间
    2. 就是当系统里没有比这个回滚日志更早的read-view的时候

      疑惑点

    3. 一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的

      非所有数据,而是所读取行

    1. 会去比较redolog中的内容和binlog中的内容。如果发现像上面这种情况,也会认为是成功的,因为binlog已经记录,只是差redolog中的一个commit状态没有修改成功
    1. 五次重试后,消费处于一个未被确认的状态。因为需要你手动 ack!下次服务重启的时候,会继续消费这条消息。
      1. manul模式下,如果没有手工ack/reject,服务器治不会将消息从unack状态变为其他状态(比如抛出异常)。
      2. auto模式正常情况下(即包括抛出异常情况下,除非出现故障)会将消息设置为ack/reject状态。
    1. 如果channel.basicNack(8, false, false);表示deliveryTag=8的消息处理失败且将该消息直接丢弃。

      basicNack的requeue为false情况下,数据会被直接丢弃

    1. The index is the index of the input or output binding. It is always 0 for typical single input/output function, so it’s only relevant for Functions with multiple input and output arguments.

      序号的作用在哪里

    2. output - <functionName> + -out- + <index>

      output以-out-相连

    1. @EnableBinding:将定义通道的接口绑定到某个 Bean 以便于我们可以通过该 Bean 操作通道进行发送和接收消息。

      注解的参数是class,class实例化成一个bean,通过bean来操作消息

    1. 可以通过在类上监听队列,然后在类中写带有不同参数类型的方法,来接收不同的操作推送的信息

      这种方式不行,找不到相应的messageconverter,会报错。具体原因:https://stackoverflow.com/questions/64029154/spring-amqp-rabbitmq-object-sent-as-one-type-gets-converted-to-map-in-listener

    1. It will work if the @RabbitListener is defined at the method level instead of the class level because we can infer the generic type from the listener method parameter.

      @rabbitlistener在方法级别时,类型推导有用

    1. 我们需要监听之前创建的通道greetingChannel。让我们为它创建一个绑定

      如果消费者和生产者在同一个实例中,会优先走本地调用,不会产生队列消息。消费者能正常接收mq消息

    2. 使用SubscribableChannel和@Input注解连接到greetingChannel,消息数据将被推送这里

      这里怎么让rabbitmq创建匿名的queue的

    1. 都是可以根据 RoutingKey 把消息路由到不同的队列

      direct模式下,同一个routingkey可以绑定不同的queue,这样路由器可以分别发送同样的消息到相应的两个queue中