2장. ActiveMQ
2.1. ActiveMQ Component 링크 복사링크가 클립보드에 복사되었습니다!
ActiveMQ 구성 요소를 사용하여 JMS Queue 또는 Topic에 메시지를 보내거나 Apache ActiveMQ 를 사용하여 JMS Queue 또는 Topic의 메시지를 사용할 수 있습니다.
이 구성 요소는 JMS 구성 요소를 기반으로 하며, 선언적 트랜잭션에 Spring의 JMS 지원을 사용합니다. 이를 위해 Spring의 JmsTemplate
을 사용하고 사용하기 위해 MessageListenerContainer
를 사용합니다. 모든 JMS 구성 요소 옵션은 ActiveMQ Component에도 적용됩니다.
이 구성 요소를 사용하려면 클래스 경로에 activemq.jar
또는 activemq-core.jar
가 있고 camel-core.jar
와 같은 Apache Camel 종속성(예:camel-spring.jar
및 camel-jms.jar
)이 있는지 확인하십시오.
성능에 영향을 줄 수 있으므로 JMS에서 트랜잭션을 사용하는 경우 JMS 페이지의 아래 섹션 트랜잭션 및 캐시 수준을 참조하십시오.
2.2. URI 형식 링크 복사링크가 클립보드에 복사되었습니다!
activemq:[queue:|topic:]destinationName
activemq:[queue:|topic:]destinationName
여기서 destinationName 은 ActiveMQ 큐 또는 주제 이름입니다. 기본적으로 destinationName 은 큐 이름으로 해석됩니다. 예를 들어, 큐에 연결하려면 FOO.BAR
을 사용합니다.
activemq:FOO.BAR
activemq:FOO.BAR
원하는 경우 선택적 queue:
접두사를 포함할 수 있습니다.
activemq:queue:FOO.BAR
activemq:queue:FOO.BAR
항목에 연결하려면 topic:
접두사를 포함해야 합니다. 예를 들어, 주제와 연결하려면 다음을 사용합니다 .
activemq:topic:Stocks.Prices
activemq:topic:Stocks.Prices
2.3. 옵션 링크 복사링크가 클립보드에 복사되었습니다!
모든 JMS 구성 요소 옵션은 ActiveMQ Component에도 적용됩니다.
2.4. EAP 배포의 Camel 링크 복사링크가 클립보드에 복사되었습니다!
이 구성 요소는 Red Hat JBoss EAP(JBoss Enterprise Application Platform) 컨테이너에서 간소화된 배포 모델을 제공하는 EAP 기반 Camel(Wildfly Camel) 프레임워크에서 지원합니다.
임베디드 브로커 또는 외부 브로커와 함께 작동하도록 ActiveMQ Camel 구성 요소를 구성할 수 있습니다. JBoss EAP 컨테이너에 브로커를 포함하려면 EAP 컨테이너 구성 file drop-whatfor 세부 사항에 ActiveMQ 리소스 어댑터를 구성하려면 ActiveMQ 리소스 어댑터 구성 을 참조하십시오.
2.5. 연결ECDHE 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음 테스트 케이스에서는 activeMQComponent()
메서드 를 사용하여 ActiveMQComponent를 CamelContext 에 추가하는 방법과 ActiveMQ에 연결하는 데 사용되는 brokerURL 을 지정하는 방법을 보여줍니다.
camelContext.addComponent("activemq", activeMQComponent("vm://localhost?broker.persistent=false"));
camelContext.addComponent("activemq", activeMQComponent("vm://localhost?broker.persistent=false"));
2.6. Spring XML을 사용하여 연결ECDHE 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음과 같이 ActiveMQ 브로커 URL을 ActiveMQComponent에서 구성할 수 있습니다.
2.7. 연결 풀링 사용 링크 복사링크가 클립보드에 복사되었습니다!
Camel을 사용하여 ActiveMQ 브로커로 보낼 때 풀링된 연결 팩토리를 사용하여 JMS 연결, 세션 및 생산자의 효율적인 풀링을 처리하는 것이 좋습니다. 자세한 내용은 ActiveMQ Spring 지원을 참조하십시오.
- Maven으로 AMQ 풀을 추가합니다.
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-pool</artifactId> <version>5.11.0.redhat-630516</version> </dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>5.11.0.redhat-630516</version>
</dependency>
- 다음과 같이 activemq 구성 요소를 설정합니다.
풀링된 연결 팩토리에서 init 및 destroy methods를 확인합니다. 이러한 방법은 연결 풀이 제대로 시작되고 종료되었는지 확인하는 데 중요합니다.
그런 다음 PooledConnectionFactory
는 동시에 최대 8개의 연결이 있는 연결 풀을 만듭니다. 각 연결은 여러 세션에서 공유할 수 있습니다.
연결당 최대 세션 수를 구성하는 데 사용할 수 있는 maxActive
라는 옵션이 있습니다. 기본값은 500
입니다.
ActiveMQ 5.7 이후의 옵션은 목적을 더 잘 반영하도록 maxActiveSessionPerConnection
로 이름이 변경되었습니다.
concurrentConsumers
는 maxConnections
보다 높은 값으로 설정됩니다. 이 작업은 각 소비자가 세션을 사용할 수 있으므로 세션이 동일한 연결을 공유할 수 있으므로 이 작업이 작동합니다. 이 예제에서는 8 * 500 = 4000 세션을 동시에 사용할 수 있습니다.
2.8. 경로에서 MessageListener call 링크 복사링크가 클립보드에 복사되었습니다!
ActiveMQ 구성 요소는 JMS MessageListener 에서 프로세서 까지 도우미 유형 도 제공합니다. 즉, 빈 구성 요소가 모든 경로 내에서 직접 JMS MessageListenerBean 을 호출할 수 있습니다.
다음과 같이 JMS에서 MessageListener를 생성할 수 있습니다.
예제
public class MyListener implements MessageListener { public void onMessage(Message jmsMessage) { // ... } }
public class MyListener implements MessageListener {
public void onMessage(Message jmsMessage) {
// ...
}
}
그런 다음 다음과 같이 경로에서 사용하십시오.
예제
from("file://foo/bar"). bean(MyListener.class);
from("file://foo/bar").
bean(MyListener.class);
즉, 모든 Apache Camel 구성 요소를 재사용하여 JMS MessageListener
ECDHE\에 쉽게 통합할 수 있습니다.
2.9. ActiveMQ 대상 옵션 사용 링크 복사링크가 클립보드에 복사되었습니다!
ActiveMQ 5.6에서 사용 가능
" 대상" 접두사를 사용하여 엔드포인트 uri에서 대상 옵션을 구성할 수 있습니다. 예를 들어 소비자를 배타적으로 표시하고 사전 패치 크기를 50으로 설정하려면 다음과 같이 수행할 수 있습니다. .ECDHE
2.10. 권고 메시지 사용 링크 복사링크가 클립보드에 복사되었습니다!
ActiveMQ는 사용할 수 있는 항목에 배치된 권고 메시지를 생성할 수 있습니다. 이러한 메시지는 느린 소비자 감지 또는 통계 빌드(일별 메시지/생성 등)의 경우 경고를 보내는 데 도움이 될 수 있습니다. 다음 Spring DSL 예제에서는 주제에서 메시지를 읽는 방법을 보여줍니다.
예제
큐에서 메시지를 사용하는 경우 data/activemq 폴더 아래에 다음 파일이 표시되어야 합니다.
advisoryConnection-20100312.txt advisoryProducer-20100312.txt
advisoryConnection-20100312.txt
advisoryProducer-20100312.txt
문자열을 포함합니다.
예제
2.11. 구성 요소 JAR 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
이 종속성이 필요합니다.
-
camel-activemq
ActiveMQ는 ActiveMQ 프로젝트와 함께 릴리스된 JMS 구성 요소의 확장입니다.
<dependency> <groupId>org.fusesource</groupId> <artifactId>camel-activemq</artifactId> <version>7.11.0.fuse-sb2-7_11_0-00035-redhat-00001</version> </dependency>
<dependency>
<groupId>org.fusesource</groupId>
<artifactId>camel-activemq</artifactId>
<version>7.11.0.fuse-sb2-7_11_0-00035-redhat-00001</version>
</dependency>