[java] ActiveMQ와 RabbitMQ의 메시지 보관 기간 설정
목차
ActiveMQ의 메시지 보관 기간 설정
ActiveMQ는 메시지를 모유로서 보관하는 기능을 제공합니다. 이 기능을 사용하면 메시지를 일정 기간 동안 보관하고, 해당 기간이 지난 메시지를 삭제할 수 있습니다.
메시지 보관 기간 설정 방법
conf/activemq.xml
파일을 엽니다.<broker>
태그 안에 다음과 같은 설정을 추가합니다.
<broker>
...
<persistenceAdapter>
<kahaDB directory="${activemq.data}/kahadb" ...>
...
<indexCacheSize>10000</indexCacheSize>
<journalMaxFileLength>1024 * 20</journalMaxFileLength>
<checkpointInterval>5000</checkpointInterval>
<cleanupInterval>30000</cleanupInterval>
<gcInterval>60000</gcInterval>
</kahaDB>
</persistenceAdapter>
...
</broker>
-
위의 설정에서
cleanupInterval
을 원하는 값으로 설정합니다. 이 값은 메시지가 보관되는 시간 간격을 의미하며, 밀리초 단위로 설정됩니다. 예를 들어,30000
을 설정하면 30초마다 메시지가 삭제됩니다. -
ActiveMQ를 재시작합니다.
주의사항
- 메시지 보관 기간을 설정할 때는 서비스 운영 환경에 맞게 적절한 값을 선택해야 합니다. 메시지 보관 시간이 짧으면 메시지 손실 가능성이 높아지고, 길면 디스크 사용량이 많아질 수 있습니다.
RabbitMQ의 메시지 보관 기간 설정
RabbitMQ는 메시지를 Queue에 보관하는 기능을 제공합니다. 메시지 보관 기간을 설정하면 지정된 기간이 지나면 메시지가 삭제되며, 해당 메시지를 수신할 수 없게 됩니다.
메시지 보관 기간 설정 방법
- RabbitMQ 관리자 화면에 로그인합니다.
- “Queues” 메뉴로 이동하여 메시지 보관 설정을 변경할 Queue를 선택합니다.
-
선택한 Queue의 “Expiry” 항목을 원하는 값으로 설정합니다. 이 값은 메시지의 유효기간을 나타내며, 밀리초 단위로 설정됩니다. 예를 들어,
60000
을 설정하면 1분 경과 후에 메시지가 삭제됩니다. - 설정을 저장하고 RabbitMQ를 재시작합니다.
주의사항
- RabbitMQ는 메시지 보관 기간을 Queue 별로 설정할 수 있습니다. 따라서 원하는 Queue의 Expiry를 설정해야 해당 Queue에 대한 메시지 보관 기간이 변경됩니다.
위의 예제에서는 ActiveMQ와 RabbitMQ에서의 메시지 보관 기간 설정 방법을 소개하였습니다. 각각의 환경에 맞게 설정 값을 조정하여 메시지 보관 기간을 적절하게 관리할 수 있습니다. 자세한 내용은 해당 메시지 브로커의 공식 문서를 참조하시기 바랍니다.