10.2. 생산자 Flow Control

소비자 창 기반 흐름 제어와 유사한 방식으로 AMQ 브로커는 브로커가 너무 많은 데이터로 인해 브로커가 과잉되지 않도록 생산자에서 브로커로 전송되는 데이터의 양을 제한할 수 있습니다. 생산자의 경우 창 크기는 언제든지 인플라이트할 수 있는 바이트의 양을 결정합니다.

10.2.1. Producer 창 크기 설정

창 크기는 창에 있는 각 바이트에 대한 하나의 크레딧인 크레딧에 따라 브로커와 생산자 간에 협상됩니다. 메시지가 전송되고 크레딧이 사용되므로 생산자는 더 많은 메시지를 보내기 전에 브로커로부터 크레딧을 요청해야 합니다. 생산자와 브로커 간의 크레딧을 교환하면 이들 간의 데이터 흐름이 규제됩니다.

창 크기 설정

다음 예제에서는 코어 JMS 클라이언트를 사용할 때 생산자 창 크기를 1024 바이트로 설정하는 방법을 보여줍니다.

절차

  • 생산자 창 크기를 설정합니다.

    • 코어 JMS 클라이언트가 JNDI를 사용하여 연결 팩토리를 인스턴스화하는 경우 연결 문자열 URL의 일부로 producerWindowSize 매개변수를 포함합니다. JNDI 컨텍스트 환경에 URL을 저장합니다. 아래 예제에서는 jndi.properties 파일을 사용하여 URL을 저장합니다.

      java.naming.factory.initial=org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory
      java.naming.provider.url=tcp://localhost:61616?producerWindowSize=1024
    • 코어 JMS 클라이언트가 JNDI를 사용하여 연결 팩토리를 인스턴스화하지 않으면 ActiveMQConnectionFactory.setProducerWindowSize() 로 값을 전달합니다.

      ConnectionFactory cf =  ActiveMQJMSClient.createConnectionFactory(...)
      cf.setProducerWindowSize(1024);