springboot rabbitmq 보충

springboot rabbitmq 보충


분포식 환경에서 멀티listener에 대한 해답

  • topic 분포식 환경에서 두 개의 서버를 시작합니다. 그러면 두 개의listener가 있는 셈입니다. 데이터가 중복 읽히지 않을까요?답: 아니요. 하나의 소식은 여러 개의 대열에 던질 수 있지만 대열에 들어가면 모든 대열의 소식은 한 소비자에게만 소비됩니다

  • Queue와 exchange의routingKey 귀속과 묶음 풀기 구덩이

  • a대열과 exchange를 연결한routingkey는 111입니다. 나중에 이 routingkey를 b대열에 주고 싶습니다. 당신은 반드시 연결을 해제하는 동작을 조작해야 합니다. 만약에 조작하지 않으면 a대열이 111로 연결되고 b대열도 111로 연결됩니다. 이렇게 하면 이 routingkey가 보낸 데이터에 따라 두 개가 소비됩니다

  • 콜백 정보 AcknowledgeMode


    답조는 다음과 같은 방식이 있는데, 다음은 각각 실천할 것이다
    public enum AcknowledgeMode {
        NONE,
        MANUAL,
        AUTO;
    }

    공식 문서의 리셋에 대한 설명
    NONE = no acks will be sent (incompatible with channelTransacted=true). RabbitMQ calls this "autoack"because the broker assumes all messages are acked without any action from the consumer.MANUAL = the listener must acknowledge all messages by calling Channel.basicAck().AUTO = the container will acknowledge the message automatically, unless the MessageListener throws an exception. Note that acknowledgeMode is complementary to channelTransacted - if the channel is transacted then the broker requires a commit notification in addition to the ack. This is the default mode. See also txSize.
  • NONE는 자동 리셋이라고 할 수 있으며, 응답이 없거나 이상이 발생하더라도 대기열 소비에 성공했음을 알리고 데이터를 잃어버릴 수 있습니다
  • AUTO는 자동으로 이상 또는 시간 초과 사건을 검출하고 발생하면 noack로 돌아가고 메시지는 자동으로 대열로 돌아간다. 그러나 이런 방식은 메시지체 자체에 문제가 있을 수 있고 대열로 돌아가는 다른 대열도 소비할 수 없어 대열이 막힌다
  • MANUAL 수동 리셋, 프로그램에서 우리는 메시지 이상에 대한 기억력을 포착할 수 있습니다. 만약에 메시지 형식 오류가 발생하면 수동으로ack에 회답하고 다시 송신 인터페이스를 호출하여 메시지를 대열의 끝까지 밀어낼 수 있습니다.ps: 뒤에 오류 메시지가 쌓여야 합니다~~~
  • 좋은 웹페이지 즐겨찾기